如何通过打破小部分的堆内存来增强JVM的性能? 例如 -
1-Young Generation 2岁或终身代 3永久世代?
答案 0 :(得分:2)
基于这样的假设,你在内存中有3种类型的对象:在离开像方法这样的小范围之后你不需要的临时对象。存储在数据结构中的长期存在的数据结构,用于应用程序生命周期中的长时间跨度以及某些对象,如类定义本身,它们将永远不会被删除。 然后结果表明有不同的方法可用于管理内存,而且每个方法似乎都有更好的方法: 对于年轻人来说,似乎只值得保存更长寿的物品(称为生存/促销)。之后,您可以清除整个区域。 (这称为复制收集) 对于旧的,你可能会删除一些,所以你去掉你拥有的所有物品,只处理你不再需要的物品(称为扫地),对于烫发,你不做任何事情。
当然,实际上它变得非常复杂,但是这个模型非常成熟,适用于许多场景。
答案 1 :(得分:2)
为什么会这样?
因为许多聪明的人分析了很多Java应用程序,并且发现绝大多数对象都是短命的,并且它们对于创建和销毁都非常便宜。因此,他们在堆中为他们创造了一个特殊的位置 - 年轻一代。这引入了许多性能优势,通过保持堆的这一部分相当小,清理内存要快得多。代理200MB而不是几GB更快。
旧空间?
这是" old"对象去,GC需要更多的时间来清理这些对象,但通常运行的次数远少于年轻一代。
在Java 8中删除了永久生成,因此您可以阅读它,但它很快就会从我们的雷达中消失。