JVM运行时数据区域学习

版权声明:分享,转载原创文章,麻烦注明一下出处~谢谢 https://blog.csdn.net/sc9018181134/article/details/80471182

JVM运行时数据区域思维导图

注:
    1.本地方法栈和虚拟机栈并非所有的JVM都有区分,不是强制规定,HotSpot中本地方法栈和虚拟机栈是合在一起的;
    2.方法区不等于永久代,HotSpot使用永久代来实现方法区,但在其他的JVM中并不适用;
    3.一般来说,对象实例和数组都在堆上分配但是不是绝对的.随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一下微妙的变化.参考深入JVM虚拟机,参考hollischuang大神的文章:对象和数组并不都是在堆上分配内存的;
    4.堆内存 = 新生代(1/3) + 老年代(2/3);新生代 = Eden + from survivor + to survivor.
    5.永久代属于HotSpot,JDK1.8废弃了永久代,取而代之的是Metaspace(元空间),元空间使用的是直接内存,不使用虚拟机内存;
    6.在HotSpot中字符串常量池在jdk1.8由原来的方法区(永久代)转移到java堆中.

猜你喜欢

转载自blog.csdn.net/sc9018181134/article/details/80471182