垃圾收集器

Garbage Collection Roots:

  • Local variables
  • Active threads
  • Static fields
  • JNI references(本地方法引用的对象)

因为新生代朝生夕死,死得快


串行收集器 :单线程, 用于内存小的嵌入式设备



实际中就是这2个之间做权衡


串行收集器

-XX: + UseSeriaIGC新老都开启 没啥好说的 web不会用到

并行收集器

-XX:+UsePara|lelGC新老都开 吞吐量优先 只开老-XX:+UseParalIelOIdGC
Server模式下默认这个 (内存>2G是Server)
内存不够了,就停用户线程, 启动多个线程来垃圾回收
默认都是这个


-XX:ParallelGCThreads= 几个线程来垃圾回收

CPU >8 N=5/8
CPU <8 N =CPU

自适应: 这样设以后,会自动调优 先满足最小停顿时间,再满足吞吐量 最后满足最小堆
-XX:MaxGCRauseMillis= < N > 停顿时间
-XX:GCTimeRatio= < N > 吞吐量
-Xmx<N>最小堆

动态调整大小比例设置
-XX:YoungGenerationSizelncrement= <Y>
-XX:TenuredGenerationSizelncrement= <T>
-XX:AdaptiveSizeDecrementScaleFactor= < D >

并发收集器

CMS:XX: + UseConcMarkSweepGCold收集器 默认配套开启-XX: + UseParNewGCnew区是这个
G1:-XX:+UseG1GC


如何选择垃圾收集器
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/collectors.html
GC调优指南:
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容