jvm gc算法和配置
gc 收集算法
1.引用计数法(Reference Counting Collector)
2.tracing算法(Tracing Collector) 或 标记-清除算法(mark and sweep)
3.compacting算法 或 标记-整理算法
4.copying算法(Compacting Collector)
5.generation算法(Generational Collector)
Java引用级别
级别 | 什么时候被垃圾回收 | 用途 | 生存时间 |
---|---|---|---|
强引用 | 不会被回收 | 正常用途 | jvm停止运行 |
软引用 | 内存不足时 | 内存敏感的高速缓存,比如网页缓存、图片缓存等 | 内存不足时终止 |
弱引用 | gc的时候 | 缓存 | gc的时候 |
虚引用 | |||
gc收集器
Serial收集器(复制算法)
新生代单线程收集器,标记和清理都是单线程,优点是简单高效。
Serial Old收集器(标记-整理算法)
老年代单线程收集器,Serial收集器的老年代版本。
**ParNew收集器(停止-复制算法) **
新生代收集器,可以认为是Serial收集器的多线程版本,在多核CPU环境下有着比Serial更好的表现。
Parallel Scavenge收集器(停止-复制算法)
并行收集器,追求高吞吐量,高效利用CPU。吞吐量一般为99%, 吞吐量= 用户线程时间/(用户线程时间+GC线程时间)。适合后台应用等对交互相应要求不高的场景。
Parallel Old收集器(停止-复制算法)
Parallel Scavenge收集器的老年代版本,并行收集器,吞吐量优先
CMS(Concurrent Mark Sweep)收集器(标记-清理算法)
高并发、低停顿,追求最短GC回收停顿时间,cpu占用比较高,响应时间快,停顿时间短,多核cpu 追求高响应时间的选择