Does G1 GC have a max size of region or max amount of region?

怎甘沉沦 提交于 2019-12-02 00:12:49

问题


when i studied G1 GC, I found this article: http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html. In that article, there is something says as follow:

The G1 GC is a regionalized and generational garbage collector, which means that the Java object heap (heap) is divided into a number of equally sized regions. Upon startup, the Java Virtual Machine (JVM) sets the region size. The region sizes can vary from 1 MB to 32 MB depending on the heap size. The goal is to have no more than 2048 regions.

Does that mean the max size of java heap memory that G1 GC can deal with is 2048 * 32M, and if the size exceeds it, what will happen?


回答1:


From HotSpot JVM sources:

  // Minimum region size; we won't go lower than that.
  // We might want to decrease this in the future, to deal with small
  // heaps a bit more efficiently.
  static const size_t MIN_REGION_SIZE = 1024 * 1024;

  // Maximum region size; we don't go higher than that. There's a good
  // reason for having an upper bound. We don't want regions to get too
  // large, otherwise cleanup's effectiveness would decrease as there
  // will be fewer opportunities to find totally empty regions after
  // marking.
  static const size_t MAX_REGION_SIZE = 32 * 1024 * 1024;

  // The automatic region size calculation will try to have around this
  // many regions in the heap (based on the min heap size).
  static const size_t TARGET_REGION_NUMBER = 2048;
  • MIN_REGION_SIZE (1MB) and MAX_REGION_SIZE (32MB) are hard limits;
  • TARGET_REGION_NUMBER is just a hint that is used to calculate default region size if it is not specified among JVM options. The actual number may exceed this value.


来源:https://stackoverflow.com/questions/42569821/does-g1-gc-have-a-max-size-of-region-or-max-amount-of-region

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!