如何解决Young gen的默认收集器是Java 1.5、1.6、1.7和1.8?
我正在学习Java的gc技术,在阅读有关我标记的内容时,请参考https://c-guntur.github.io/java-gc的文章,图片 GENERATIONAL GC - TYPES - HISTORY
并行收集器 又称为吞吐量收集器-Java 1.5及更高版本,默认收集器,Java 1.5、1.6、1.7和1.8(*↓) 年轻的一代,仅具有并行(清除)集合。
并发标记扫描(CMS)收集器(大部分*)-从Java 1.5开始可用,直到Java 1.8 默认情况下,Young gen。 使用序列集合和Tenured gen。使用CMS收集器。
我有点困惑什么是Young gen的默认收集器。 1.5、1.6、1.7和1.8的概念? 非常感谢
解决方法
自早期以来,年轻一代的收集器算法并没有真正改变。
年轻一代分为三个区域:伊甸园和两个幸存者空间。实际上,伊甸园空间是带有指针的堆栈。当对象在实例化期间需要分配空间时,将使用当前指针引用,并且将指针增加该对象的大小。这是指针碰撞,并且非常快(实际上大约6条指令,并且比对malloc的调用更快)。唯一真正的变化是引入了线程本地分配缓冲区(TLAB)。我不确定何时引入它们,但它们在JDK 5中存在。它们在Eden中为每个线程分配一个区域,以避免在分配过程中需要锁定和可能的争用。
当年轻一代需要收集时,所有活动对象以及来自幸存者空间中尚未到达的所有活动对象都将被复制到 to 幸存者空间。任职期限(届时他们将任职至老一代)。
,感谢所有人的帮助,正如Alexey Ragozin所说的那样,“默认”似乎不完全是,我发现Oracle的更好的文章涵盖了细节 1.Java垃圾收集基础 https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html#RequiredSoftware 2.使用5.0 Java虚拟机调整垃圾收集 https://www.oracle.com/java/technologies/tuning-garbage-collection-v50-java-virtual-machine.html#1.1.Introduction-Coutline
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。