运行时数据区: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5
JAVA应用的性能做监控和调优(3) ---垃圾回收相关概念
JVM常用参数:
-Xms -Xmx 最小堆内存 最大堆内存
-XX:NewSize -XX:MaxNewSize 新生代最小值 新生代最大值
-XX:NewRatio -XX:SurvivorRatio 新生代和老年代的比例 EDEN区和Survivor区的比例
-XX:MetaspaceSize -XX:MaxMetaspacesize 元空间大小 (经常调的就是这个,元数据空间大了后面的就相对大了一些)
-XX:+UseCompressedClassPointers 要不要启用压缩类指针
-XX:CompressedClassSpaceSize 启用压缩类指针后 压缩类空间的大小 最大一个G
-XX:InitialCodeCacheSize 机器码(编译后的代码)缓存区 初始大小
-XX:ReservedCodeCacheSize 机器码缓存区最大值 最大值

垃圾回收算法
枚举根节点 做可达性分析
根节点包括:类加载器 ,Thread,虚拟机栈本地变量表,static成员,常量引用,本地方法栈的变量等.
清除算法包括
1,标记清除 先标记 标记完之后统一回收,效率不高,碎片过多
2,标记复制 内存分两块,每次只是用一块,一块内存用完了,将活着的对象复制到另外一块上,再把满的内存一次清理掉 简单高效,但空间利用率低
3\标记整理 把活着的对象移向另外一端,清理掉边界以外的内存

分带垃圾会后(不同的区会用不同的算法清理)
Young区用复制算法 (新的对象产生速度比较快,但周期比较短,需要及时回收)
Old区用标记清除或者标记整理 (对象周期比较长,)

对象分配
----对象优先分配到Eden区
----大对象直接进去老年代: (–XX:PretenureSizeThreshold通过此参数指定,超过这个参数的就直接进入老年代)
----长期存活的对象也是进入老年代 (-XX:MaxTenuringThreshold -XX:+printTenuringDistribution -XX:TargetSurvivorRatio)
垃圾收集器
串行 : Serial SerialOld (单线程)
并行 : Parallel Scavenge ParallelOld (吞吐量 优先)
并发 CMS G1 (停顿时间优先)
并行:多条垃圾收集线程并行工作,但此时用户线程处于等待状态. 适合弱交互场景
并发:用户线程和垃圾收集线程同时执行(也可能交替执行),垃圾回收执行的 时候,不停顿用户线程.适用于响应时间有要求的场景,比如web
停顿时间:垃圾回收时中断应用执行的时间 -XX:MaxGCPauseMillis
吞吐量:花在垃圾回收的时间和华仔应用的时间占比 -XX:GCtImeRatio=< n > 垃圾收集时间占1/(1+n)

串行垃圾收集器:
-XX:+UseSerialGC -XX:+UseSerialOldGC
并行收集器(吞吐量有限)
-XX:+UseParallelGC -XX:+UseParallelOldGC
并发收集器
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+UseG1GC

如何选择垃圾回收器 参考 https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/collectors.html
1\优先调整堆的大小,让服务器自己选择
2\如果内存小于100M,使用串行收集器
3\如果是单核,并且没有停顿时间要求,串行或者JVM自己选择
4\如果允许停顿1s,选择并行,或者JVM自己选择
5\如果响应时间重要,并且不能超过1秒,使用并发收集器
垃圾回收指南 https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html

Parallel Collector
-XX:+UseParallelGC 手动开启 Server默认开启
-XX:+UseParalleGCThreads=< N > 多少个GC线程 cpu>8 N=5/8 CPU<8 N=CPU
并行会自适应调整内存
-XX:MaxGCPauseMillis = < N > //最大停顿时间
-XX:GCTimeRatio= < N > //吞吐量
-Xmx< N > //堆内存

CMS Collector
并发收集
低停顿 低延迟
它是一个老年代收集器

G1Collector 新生代和老年代收集器

评价垃圾回收器的好坏,最大吞吐量和最大停留时间

相关文章:

  • 2021-05-18
  • 2021-05-09
  • 2021-06-21
  • 2021-11-03
  • 2021-11-02
  • 2021-09-23
  • 2021-06-18
  • 2021-12-17
猜你喜欢
  • 2021-12-30
  • 2021-05-11
  • 2023-03-02
  • 2022-12-23
  • 2021-11-29
  • 2021-12-23
  • 2021-12-10
相关资源
相似解决方案