究竟是谁告诉你,Region 区是可以动态扩容的?

最近听到了一些大厂同学的描述,当时给我问懵了,不知道是我的表述有错误还是你理解有问题,他告诉我 Region 区是可以动态扩容的……我表示震惊,且语塞,他说:你不知道,没关系……

我翻了翻官方描述,没有一句话说了,Region 区大小不够会动态调整 Region 区的说法。如果能动态扩容,那我堆大小固定,其他 Region 区是不还得配合缩容?
我只知道,他的逻辑分区会动态调整,但也是基于 Region 区块来做的
在这里插入图片描述
我再翻译一下这个单词 Upon startup
在这里插入图片描述
希望有知道,官方在哪里写了 Region 区动态扩容的方法和机制的文章可以发给我,让我涨涨知识,顺便打我脸。十分感谢。

关于 G1 Region 区的解释

官网描述 g1_gc_tuning

官网描述 garbage_first_garbage_collection

首先 G1 的分区是将我们的内存区域分成了一些大小相等的 region(区域)。我们的对象就分配在每个 region 区当中,当然对于一些大对象,会尝试获取连续的多个 region 区域进行分配。

要重要说明的一点是,region 在初始化分配好大小后其大小是固定的,不会动态改变。可以改变的是每个区域的定义,比如 Eden 区的大小,Survivor 区、老年代、巨型对象区

动态调整这些区域的大小有利于垃圾收集的效率

对于 G1 来说,静态变量,类原信息,存储在元空间、元数据区中,其使用的也是 region 区的一部分,并非直接内存。

猜你喜欢

转载自blog.csdn.net/w903328615/article/details/129654140