metaspace元空间
- JDK 8没有永久发电
- 类元数据存储在名为Metaspace的新空间中
- 与Java堆不相邻
- 元空间从本机内存中分配
- 元空间的最大可用空间是可用系统记忆
- 这可能会受到MaxMetaspaceSize JVM选项的限制
Compressed Class Space压缩类空间
- 如果启用了UseCompressedClassesPointers,则内存用于类及其元数据
- –Metaspace
- – Compressed class space
- 64位类指针用32位偏移量表示
- 由32位偏移量引用的类元数据存储在Compressed Class Space
- 默认压缩类空间大小为1GB
- MaxMetaspaceSize为这两种类型的提交大小设置了上限这些空间
更多细节参考这篇文章:https://javakk.com/436.html
Code Cache代码缓存
- 代码缓存用于存储Just intime编译器生成的编译代码
- 从本机内存中分配
- 由代码缓存清理器管理
Native Memory本机内存
- 可用系统内存
- 不受JVM内存管理的管理
HotSpot Garbage Collectors垃圾收集器
热点垃圾收集类型
Young Generation年轻代系列
–Serial是一个stop-the-world,复制收集器,使用单个GC线程
–ParNew是一个stop-the-world,复制使用多个GC线程的收集器
–Parallel Scavenge是一个停止世界,复制使用多个GC线程的收集器
Old Generation老年代收藏
–Serial Old是一个使用单个GC线程的stop-the-world、mark-sweep紧凑型收集器
–CMS是一个多并发、低暂停的收集器
–Parallel Old是一个使用多个GC线程的压缩收集器
G1是大型堆的第一个垃圾收集器,提供可靠的GC暂停
–有几代,但使用不同的内存布局
如何启用收集器
- UseSerialGC:Serial + Serial Old
- UseParNewGC:ParNew + Serial Old
- 使用concmarksweepgc:ParNew+CMS+Serial Old。CMS是大多数是时候收集老一代了。当一个并发的发生模式故障。
- UseParallelGC:Parallel Scavenge + Parallel Old
- 两代都使用g1gc:G1 GC
标记-扫描紧凑型采集器
- -XX:+UseSerialGC或–XX:+UseParNewGC为Old选择串行旧收集器一代
- Stop-the-world 老年代收集器。
- 旧的是用标记-清除紧凑型收集的。
- 标记相位:标记所有带电物体。
- 清扫阶段:扫过堆,识别垃圾。
- 滑动阶段:GC执行滑动压缩,滑动活动对象在堆的开始。
Parallel Collector并联采集器
-XX:+usepallelgc
–Young Generation collected with Parallel Scavenge
– Old Generation collected with Parallel collector
也称为吞吐量收集器
Stop-the-world收集
JDK 9之前的服务器类型机器上的默认值
在多个核心上并行执行采集
并发标记扫描收集器
-XX:+UseConcMarkSweepGC
–Young gen–ParNew收集器
–老一代–CMS收集器
低延迟采集器,主要是并发的
无堆压缩-碎片化
免费列表链接未分配区域
与缓冲指针分配相比,分配成本较高
年轻收藏品的额外开销
更大的堆大小要求和浮动垃圾
在Java 9中已弃用
G1收集器
服务器式垃圾回收器,针对大内存
在实现垃圾收集(GC)暂停时间目标的同时高吞吐量
更好的GC人体工程学
低暂停,无碎片
集合中的并行性和并发性
G1是压实收集器
在Oracle JDK 7 update 4及更高版本中完全受支持
JDK 9中的默认收集器
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/444.html
暂无评论