jvm是java虚拟机的缩写,JVM是一种用于计算设备的一种规范,它是一个虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
java虚拟机是实现java语言与平台无关性的关键。一般的高级语言如果在不同的平台运行,至少需要编译成不同的目标代码,而java虚拟机引入后,java语言在不同平台运行的时候不需要重新编译,java语言使用java虚拟机屏蔽了与平台相关的具体信息,从而使得java语言编译程序只需要生成java虚拟机上运行的代码(字节码),就可以在多个平台不加修改的运行。java虚拟机执行字节码的时候,把字节码解释成具体平台的相应的机器指令执行,这就是java语言与平台无关的关键所在,也是java能够实现“一次编译,到处运行”的原因。
三、JVM内存管理及垃圾回收机制
JVM内存结构分为:方法区(method)、栈内存(stack)、堆内存(heap)、本地方法栈。
方法区:
保存方法代码(编译后的java代码)和符号表,存放了要加载的类信息,静态变量,final类型的常量,属相和方法信息。
栈内存:
在Windows下,栈是低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先设定好的,在Windows下,栈的大小是固定的(是一个编译时就确定的常数),如果申请的空间超出栈的剩余空间,将提示overflow。因此能从栈获得的空间较小,只有栈的剩余空间大于申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。由系统自动分配