上一篇 <<<并发编程--如何优化多线程总结
下一篇 >>>
1.整体结构
JVM内存结构2.堆结构
这块区域是JVM中最大的,用于存储应用的对象和数组,也是GC主要的回收区,一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。
堆内存分为三部分:新生代、老年代、永久代。
3.栈结构
栈帧空间在什么销毁:
a.当我们方法执行结束之后,栈帧空间也会销毁
b.方法抛出异常。
4.程序计数器
程序计数器记录我们当前线程执行的行号。(只有在多线程中才有
作用,线程切换的时候通过程序计数器知道在哪行继续执行。)
程序计数器内存区域是虚拟机中唯一没有规定OutOfMemoryError情况的区域。
5.本地方法栈
java调用c语言代码jni技术
具体做法是在本地方法栈中登记native方法,在执行引擎执行时加载Native Liberies.有的虚拟机(比如Sun Hotpot)直接把两者合二为一。
本地方法栈和JVM栈的差异
他们都是线程私有的,区别是JVM栈为JVM执行Java方法(也就是字节码)服务,而本地方法栈为JVM使用到的Native方法服务。
JVM详细资料请查阅:Java语言和虚拟机规范、Java SE 8版虚拟机规范
网友评论