jjzjj

Tenuring

全部标签

java - HotSpot JVM 中的动态 tenuring 阈值调整是如何工作的?

到目前为止我知道:对象分配在eden空间中,如果它们在次要集合中幸存下来,它们将被提升到幸存者空间之一对于进一步的次要集合,在次要集合中幸存下来的对象将在两个幸存者空间之间交换。在此期间,对象的个体年龄随着每次小收集而增加。达到特定tenuredthreshold的对象被提升到tenuredspace(老年代)。您可以设置InitialTenuringThreshold(因为它说的是“初始”而不是“最小”)和MaxTenuringThreshold(最大值:15)。然而,JVM会根据实际使用的幸存者空间和期望的幸存者空间调整实际任期阈值(我认为每次主要收集之后)。可以使用“Target

Java 垃圾收集,基于类的 Tenuring

我一直在研究Java垃圾收集器的参数,随着eden/survivor空间填满,我看到昂贵且频繁的次要垃圾收集。这是因为我分配了一个非常大的对象池。我知道这些对象是“永久的”,因为它们会被重用但永远不会被GC处理。因此,我试图找到一种方法来“自动”将这些类型的对象放置在老年代而不是新年代。我目前正在通过分配一个非常大的新一代来解决这个问题(以避免非常频繁的次要GC),不幸的是,这意味着每个单独的集合都更昂贵。我希望能够为每个类指定一个任期率,并将它设置为非常低的特定类对象,我知道这些对象永远不会被GC处理(而且非常大)(在他的例子中,是关于我的应用程序对延迟高度敏感。我当前的设置是使用最