你真的相识JVM吗?
那么为什么要配置两个survivor呢?假如只有一个可以嘛?(化身为口试官了嗷) 谜底必定是不行以嘛。。团结复制算法的头脑,我们可以想到一块survior区肯定是要保持为空的,以便我们将存活的工具复制已往。假设只有一块空缺surviorA,当eden区满了的时辰,触发第一次minorGC,我们将eden区中存活达到一按时刻的工具复制到surviorA中,很快第二次触发minorGC,eden区有部门工具要进入survivorA区中,而surviorA区自己也有一部门工具要被接纳,此时就会在survior中发生 内存碎片 ,按照复制算法的头脑,我们但愿获得的是规整的内存空间;假如是两个survior区的话,此时就可以将eden区和存放有工具的surviorA区中存活的工具都复制到空缺surviorB区中,然后清空前面提到的eden区和surviorA区,此时原先存放有工具的surviorA酿成了空缺survior区,守候下一次minorGC存下班具。 我们常常会听到MinorGC和FullGC可能说MajorGC这种说法,那么它们详细代表的寄义你真的清晰嘛?
总结 以上内容梗概基原来历于《深入领略java假造机》这本书的前三章,也是笔者重点阅读的章节,属于较量基本和理论的部门,个中团结了笔者自身的领略和粗浅熟悉,假若有偏颇之处,望读者不惜指出。(太长的篇幅轻易发生阅读抵触~ 哈哈哈)后头有机遇的话,会填坑一下假造机的类加载机制和java内存模子和线程部门。 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |