Welcome 微信登录

首页 / 软件开发 / JAVA / 深入探索Java工作原理:JVM,内存回收及其他

深入探索Java工作原理:JVM,内存回收及其他2011-10-07 博客园 zhueggJava语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用。同时,为了提高 Java语言的性能和健壮性,还引入了如垃圾回收机制等新功能,通过这些改进让Java具有其独特的工作原 理。

1.Java虚拟机

Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在 计算机中还是在其他电子设备中)安全兼容地执行保存在.class文件中的字节码。Java虚拟机的“机器码 ”保存在.class文件中,有时也可以称之为字节码文件。

Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行 ,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源 程序需要通过编译器编译成为.class文件。

Java虚拟机的建立需要针对不同的软硬件平台来实现,既要考虑处理器的型号,也要考虑操作系统的 种类。由此在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上,在UNIX、Linux、Windows和部分实 时操作系统上都可实现Java虚拟机。

2.无用内存自动回收机制

在程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行回收,很有可能会导致 内存泄漏,进而引发系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序时把不 再使用的对象内存释放掉,这种人为管理内存释放的方法往往由于程序员的疏忽而致使内存无法回收,同 时也增加了程序员的工作量。而在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用 情况,定期检测出不再使用的内存,并自动进行回收,避免了内存的泄露,也减轻了程序员的工作量。

3.代码安全性检查机制

安全和方便总是相对矛盾的。Java编程语言的出现使得客户端计算机可以方便地从网络上上传或下载 Java程序到本地计算机上运行,但是如何保证该Java程序不携带病毒或者没有其他危险目的呢?为了确保 Java程序执行的安全性,Java语言通过Applet程序来控制非法程序的安全性,也就是有了它才确保Java语 言的生存。

Java字节码的执行需要经过以下3个步骤:

(1)由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中。在此过程需要 检验该类文件是否符合类文件规范。

(2)字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如 Applet程序中写本地计算机文件系统的操作。

(3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。

注意:

Java虚拟机采用“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允 许程序访问该内存空间以外的内存。如果是Applet程序,还不允许访问客户端机器的文件系统。