首页 > 编程知识 正文

java类加载机制,适合用GC/MS分析的是

时间:2023-05-03 16:54:54 阅读:27317 作者:1464

一、引用计数法和增量收集法引用计数法3358 www.Sina.com/http://www.Sina.com /说明:

引用一次,增加一次次数。 对象生命周期结束时,将减少一个参照。 对象退出范围后(此对象将被放弃,不再使用计数器减1 )。 该算法为古老的回收算法

增量收集法原理:通过记录并操作每个对象被引用的次数而控制GC

二、标志缺点:无法循环处理引用

第一阶段:马克。 标记被引用根节点引用的所有对象的阶段——标记表示要遍历属于Java的内存空间

第二阶段:通关。 遍历整个堆以清除未标记的对象。 你认为GC执行该算法后,内存已经回收了吗? 回收已完成,但内存空间不足。 这将导致空间碎片,如下图所示。

说明:在垃圾回收算法中,根是指向对象的指针的起点部分。

在根对象上进行引用搜索时,最终可到达的对象称为可到达对象(被引用对象)

在根对象上进行引用搜索时,最终未被引用的对象称为不可到达的对象,即垃圾对象。

原因:对象占用内存空间,导致对象回收后空间碎片化。 因为你的对象消耗的内存大小必须由你定义的对象的具体内容决定,所以这些碎片空间不能由你给他们利用。 与连续内存空间相比,内存碎片的存在会降低堆内存效率,尤其是在为大型对象分配内存时。 由于Java内存空间的使用,不一定是连续的,即使是连续使用的空间,在回收了一些未到达的对象后,他仍然会产生这样的空间碎片。

例如,在你的旅行箱中,如果你能规划空间,安排如何放东西,就可以使空间利用率达到你需要的最高水平,而frdjr往脑子里塞满东西,往往容量不够

简单的例子:划分行李箱的空间,对为了达到空间最大利用率而需要放置的东西进行分类。

优化和改进(自:知乎: GC算法之一的标记-清除算法)增量收集法(Incremental Collecting)。增量收集法是在应用,运行的时候运行算法进行垃圾回收,但是在JDK5以后不再使用该算法。

其实,内存碎片和分配速度慢的主要原因是我们只用于空闲的链表。 将块的大小分类,将一个字节的块放置在free_list_2中,并将两个字节的块保持在100或100个以上字节的块中,直到…free _ list _ 2,… 这样,在分配目标内存时,根据大小分配给相应的具体可用链表会更花时间,而不是遍历整个链表。 另外,作为尺寸区分,由于很多对象可以找到适当的块,因此可以有效地减少并避免存储器芯片的产生。 这样可以有效地解决和缓解内存碎片和分配速度慢的问题。

三.复制-清除http://www.Sina.com/http://www.Sina.com/http://www.Sina.com

实现过程

多空闲链表

实现:

把内存空间划分为两个相等的区域,每次只使用其中一个区域

结果分析:从图中可以看出,拷贝清除算法虽然有效地处理了空间碎片问题,但有一半的内存空间不可用。 你觉得这里“鱼和熊掌不能兼得”吗?

缺点:内存空间损失减半

详细分析如下: GC算法双副本-清除算法(四、标记-压缩http://www.Sina.com/http://www.Sina.com /

标记-压缩算法融合了“标记-清除”和“复制-清除”两种算法的优点,可以不产生空间碎片,不同时占用额外的存储器空间

实现流程: GC时,遍历当前使用区域,将正在使用的对象复制到另一个区域中去并加以整理

避免了碎片的产生,又不需要将内存分为两半,效率很高。

详细分析见:知乎:GC算法之三 标记-压缩算法) 五、⚫ 分区算法(这里有必要清楚JVM内存的分代所以我后面)(等明白JVM内存划分之后,会考虑将GC部分与JVM内存融合一起来分析)

分区算法将整个堆空间划分成连续的不同小区间,每一小区间
都独立使用,独立回收,并可以控制一次回收的小区间数量。一般
来说,在相同条件下,堆空间越大,进行一次垃圾回收的所需的时
间就越长,导致产生的停顿时间也越长。因此如果将堆内存分割成
多个小块,并根据目标停顿时间的要求,每次合理地控制回收部分
小区间,而不是回收整个堆空间,则可以有效减小一次垃圾回收所
产生的的停顿时间。

参考文献与部分知识来源:
[1] yydyc . 深入理解 Java 虚拟机 :JVM 高级特性与最佳实践 [M].
机械工业出版社 ,2012.
[2] 乔鑫 , jddhy , zjddy , Java垃圾回收方式性能研究.浪潮电子信息产业股份有限公司.电子技术与软件工程.电子技术与软件工程. 2020,(11)
[3]知乎博主jvm专栏:链接

以上个人在学习过程中的总结,有问题的地方希望各位指正,一起学习,共同进步!

如有侵权,联系删除

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。