栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM—垃圾回收器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM—垃圾回收器

JVM—垃圾回收器
  • 串行
    • 单线程
    • 适合堆内存较小的个人电脑
  • 吞吐量优先
    • 多线程
    • 堆内存较大,多喝CPU
    • 让单位时间内,stw的时间最短,回收每次回收事件长一点过,次数少一点
  • 响应时间优先
    • 多线程
    • 堆内存大,多多核CPU
    • 尽可能让单次stw时间最短,回收次数多

串行垃圾回收器:

JVM参数: -XX:+UseSerialGC = Serial + SerialOld

某个线程A所需要的内存不够时,全部的线程都保存到某个安全点(SWT),然后线程A去执行垃圾回收操作.

吞吐量优先垃圾回收器:

JVM参数: -XX:+UseParallelGC ; -XX:+UseParallelOldGC

当某个线程内存不够时,全部线程保存某个安全点后,全不线程都去执行垃圾回收操作,尽可能多的回收内存.(吞吐量优先的垃圾回收器,默认情况下执行垃圾回收时CPU的占用率会达到100%)

其他参数:

-XX:+UseAdaptiveSizePolicy 自适应调Eden区和Survivor区的比例

-XX:+GCTimeRatio=tario 设置GC时间与程序运行总时间的占比

-XX:MaxGCPauseMillis=200ms 设置一次STW的的最大时间为200ms(默认值就是200ms)

响应时间优先(CMS):

JVM参数:-XX:+UseConcMarkSweepGC ~ -XX:+UseParNewGC ~ SerialOld

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrVXANzo-1633872976929)(C:UsersMMCCAppDataRoamingTyporatypora-user-images1633871556860.png)]

如图: 老年代内存不足时进行垃圾回收,首先STW,由某个线程A进行垃圾初始标记(标记一些根),然后其他线程可以恢复运行,该线程A继续将垃圾标记剩下的垃圾,完成之后,由于并发标记的过程中用户线程可能还会产生垃圾,或者将某些引用进行了更改,所以需要再进行一次STW,全部的线程都进行垃圾标记.最后由线程A进行垃圾清理,其他线程正常运行.

其他参数:

-XX:ParallelGCThreads=n 并行的垃圾回收线程数量,并行就是全部线程进行垃圾回收,

-XX:ConcGCThreads=threads 并发垃圾回收线程数量,一般取线程数量的1/4,如上图只有一个线程为垃圾回收线程

eads 并发垃圾回收线程数量,一般取线程数量的1/4,如上图只有一个线程为垃圾回收线程`

-XX:CMSInitiatingOccupancyFraction=percent 当内存占用达到percent(默认值为80)时就要进行垃圾回收(注意不能时是内存占满了才进行),CMS在并发清理过程有用户线程在运行,用户线程便会产生新的垃圾,如果内存被占满了才进行垃圾回收,新产生的垃圾就没有空间存储(也可以说是用户线程所需要的运行的内存空间不够)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号