栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

java虚拟机内存结构

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java虚拟机内存结构

java虚拟机内存结构

 JVM内存结构共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。

堆内存存放对象实例,几乎所有的对象实例都在这里分配内存线程共享
方法区储类信息、常量、静态变量等数据线程共享又称非堆内存,很多人愿意把方法区称为“永久代”,本质上两者并不等价,使用永久代来实现方法区而已。jdk7及以前永久代,jdk8及以后元空间。元空间不在虚拟机设置的内存中,而是使用本地内存。
栈内存存储局部变量表、操作栈、动态链接、方法出口等信息线程私有
内地方法栈本地方法栈则是为虚拟机使用到的Native方法服务线程私有
程序计数器可以看做是当前线程所执行的字节码的行号指示器线程私有

堆内存

堆内存是虚拟机所管理的内存中最大的一块。Java堆划分为新生代和老年代两个区域默认比例为1:2。而年轻代又被分成Eden区、From Survivor区、To Survivor区三部分,默认情况下年轻代按照8:1:1的比例来分配;

新生代:所有新生成的对象都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个 Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor去也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,复制次数达到一定数量或大对象新生代Eden区无法装入时将被装入年老代。复制算法垃圾回收。

老年代:在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。可年老代中存放的是一些生命周期较长的对象。标记压缩法垃圾回收。

java堆和非堆内存是日后jvm调优的主战场。

个人微信公众号,欢迎关注。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号