![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM 垃圾回收
文章平均质量分 89
水滴石穿007
这个作者很懒,什么都没留下…
展开
-
终于搞明白 cms g1收集器的区别了
一、cms 收集器cms 作为一款用户线程和收集线程并发执行的收集器,其设计理念是能够减少停顿时间(低停顿),那么怎么才能减少呢?最好的方式就是能够充分利用cpu,能够并发的去执行(多线程)。用户线程也在执行?对象的引用地址不是会被改变吗?如果改变了堆中对象的内存地址,将导致用户线程无法定位到引用对象,从而导致无法正运行,什么样的算法会在执行过程不会改变对象呢?想一想 jvm回收的算法:1、标记清理(好像只是标记,然后清楚,原对象并没有被移动),虽然会产生内存碎片2、复制(将内存一分为二,并将存活原创 2021-11-14 19:01:46 · 969 阅读 · 0 评论 -
GC触发条件,堆的构成
一、gc 什么时候触发?实际的gc发生是在 新生代内存使用达到 90%时开始进行,当gc时会复制存活的对象到S1区(to), 当gc结束后,会将S1区的对象重新放回到S0(from),既然这这两个区要互换位置,那么这两个区的内存大小也要是一样的,GC就是清理的他们,始终保持着其中一个 S 区是空留的,保证GC的时候复制存活的对象有个存储的地方。因此新生代 = (eden : from :to) =8:1:1至于为什么是这个比例:GC是统计学测算出当内存使用超过98%以上时,内存就应该被mino原创 2021-11-12 19:51:00 · 1347 阅读 · 0 评论 -
垃圾回收及涉及的算法
一、什么是垃圾?程序在运行过程中,长时间会有一些无引用且仍然存活动对象,就好多比,你有一套很大的房子,有好几个房间,自己又是个吃货,专门搞了一个房间用于存放零食。吃货每次去超市都会买一些东西回来放在零食房间,时间长了后吃货发现,已经有好多都过期了,怎么办呢?想啥呢,直接扔了吧,对于保质期内的零食来说,这些过期的就是垃级,要进行清除,把空间释放出来给下一波在路上的零食。二、怎么找到这些垃圾?都是从根开始进行搜寻(gcRoots)1、引用计数法(未采用此算法)每当对象被别的地方引用了一次,该对象计数器原创 2021-11-12 19:21:03 · 334 阅读 · 0 评论