JVM堆内存详解

       JVM的内存结构模型在往期文章中已经介绍过了,下面我们来介绍一下堆内存中的划分;堆内存中可以分为老年代年轻代,而年轻代又分为Eden区和Survivor区,其中Survivor区又分为from和to区;在对象最新创建时一般都是在Eden区,关系分布如下图:

        图中的fen分数表示每块区域的占比,例如:堆内存分配为600M,那么老年代则占用400M;而年轻代则占200M,其中Eden区占160M,from区占20M,to区占20M。

        说道这就不得不提一下垃圾回收机制了,年轻代的垃圾回收使用的是minor GC,这是一种轻量GC,会在每次Eden占满后进行,而其主要是根据对象有没有GC Root来确定是否移除;而老年代则是通过Full GC来进行垃圾回收,但是Full GC消耗较大,一般会停止当前虚拟机中所有线程,成本比较大。

        注:GC Root是在垃圾回收算法-可达性分析算法中的概念,GC Root一般为线程虚拟机本地变量、静态变量、常量对象、本地方法栈变量(native方法中的变量),主要是对没有GC Root根的对象进行回收,如下图:

        

        线程虚拟机本地变量即在线程虚拟机栈中局部变量表中的对象,缺少GC Root根代表堆内存中的对象并未被局部变量表中的对象引用

 

关于虚拟机内存模型可关注本人微信公众号在往期JVM虚拟机文章中查看

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值