JVM整体内存结构的图解,直观明了

上一篇 <<<并发编程--如何优化多线程总结
下一篇 >>>javap命令查看对象信息及操作方法在JVM层的实现原理


1.整体结构

JVM整体内存结构的图解,直观明了_第1张图片

2.堆结构

JVM整体内存结构的图解,直观明了_第2张图片

这块区域是JVM中最大的,用于存储应用的对象和数组,也是GC主要的回收区,一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。
堆内存分为三部分:新生代、老年代、永久代。

3.栈结构

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版虚拟机规范


相关文章链接:
<< << << <<<自定义SPI和热部署技术破坏类加载器的双亲委派模式
<< << << << <<<服务器CPU飙升为100%问题排查及如何避免
<< << << << << << << <<<一张图看懂CMS垃圾回收器的底层原理
<< << << << << <<

你可能感兴趣的:(JVM整体内存结构的图解,直观明了)