加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

你真的了解JVM吗?

发布时间:2019-10-21 06:28:13 所属栏目:空间 来源:Klausss
导读:对于java程序员小白来说(没错,是我),jvm总是笼罩着一层神秘的面纱的,java是如何分配内存的,又是如何回收内存的呢?有人说内存管理是一道墙,墙里面的人想出去,墙外面的人想进去。而我们java程序员,就是硬着头皮进去的那群人... 学习的目的很简单 ----

那么为什么要设置两个survivor呢?如果只有一个可以嘛?(化身为面试官了嗷) 答案肯定是不可以嘛。。结合复制算法的思想,我们可以想到一块survior区必然是要保持为空的,以便我们将存活的对象复制过去。假设只有一块空白surviorA,当eden区满了的时候,触发第一次minorGC,我们将eden区中存活到达一定时间的对象复制到surviorA中,很快第二次触发minorGC,eden区有部分对象要进入survivorA区中,而surviorA区本身也有一部分对象要被回收,此时就会在survior中产生 内存碎片 ,根据复制算法的思想,我们希望得到的是规整的内存空间;如果是两个survior区的话,此时就可以将eden区和存放有对象的surviorA区中存活的对象都复制到空白surviorB区中,然后清空前面提到的eden区和surviorA区,此时原先存放有对象的surviorA变成了空白survior区,等待下一次minorGC存放对象。

我们经常会听到MinorGC和FullGC或者说MajorGC这种说法,那么它们具体代表的含义你真的清楚嘛?

  1. MinorGC:也叫做新生代GC,顾名思义就是发生在新生代的垃圾收集动作。MinorGC非常频繁,同时回收的速度也很快 
  2.      
  3.     FullGC/MajorGC:老年代GC,指的是发生在老年代的GC,MajorGC经常会伴随着至少一次的MinorGC,同时MajorGC的速度一般要比MionrGC慢10倍以上。 

总结

以上内容梗概基本来源于《深入理解java虚拟机》这本书的前三章,也是笔者重点阅读的章节,属于比较基础和理论的部分,其中结合了笔者自身的理解和粗浅认识,如果有偏颇之处,望读者不吝指出。(太长的篇幅容易产生阅读抵触~ 哈哈哈)后面有机会的话,会填坑一下虚拟机的类加载机制和java内存模型和线程部分。

【编辑推荐】

  1. Tomcat 和 JVM 的性能调优经验总结!拿走不谢
  2. Jvm内部缓存选型?一篇文章为你解答疑惑
  3. 对JVM还有什么不懂的?带你深入浅出JVM!
  4. 一文带你深入理解JVM
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读