首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道G1垃圾收集器使用的区域大小?

如何知道G1垃圾收集器使用的区域大小?
EN

Stack Overflow用户
提问于 2017-10-17 09:15:20
回答 4查看 18.8K关注 0票数 15

我目前正在研究Java8最新版本的G1 GC。

我对“巨大的分配”有意见,所以我想知道我的区域有多大。

我怎样才能知道设置的区域大小有多大?

如何自己计算区域大小?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-19 18:03:24

Java-8中的G1区域大小基于startingHeapSize/2048,舍入到1MB到32 1MB之间的第一个幂次方;不支持<1MB或>32 1MB的区域大小。

您还可以通过-XX:G1HeapRegionSize=n设置区域大小(注意,该值具有相同的-2/范围限制)。

因此,JVM似乎倾向于2048至4095之间的区域计数(假设堆在2GB至128 2GB之间)。

通常,这些是每个堆大小范围的区域大小:

代码语言:javascript
复制
 <4GB -  1MB
 <8GB -  2MB
<16GB -  4MB
<32GB -  8MB
<64GB - 16MB
64GB+ - 32MB

注意,MB实际上是MiB,GB实际上是GiB。

票数 26
EN

Stack Overflow用户

发布于 2017-10-17 09:30:07

在启动期间,JVM根据堆的大小计算区域大小。堆的默认值是物理内存的1/4或1GB (以较小者为准)。请参考

区域大小可以根据堆大小从1MB到32 MB不等。目标是不超过2048个地区。

可以通过在启动脚本中指定-XX:G1HeapRegionSize=XX来覆盖大小。

票数 3
EN

Stack Overflow用户

发布于 2020-07-04 17:47:53

关于“如何发现设置了多大的区域大小?”,与其计算,您可以使用-Xlog:gc*标志(Java9或更高版本)启动java,应该在一开始就打印该标志:

代码语言:javascript
复制
[0.003s][info][gc,heap] Heap region size: 1M
[0.004s][info][gc     ] Using G1
[0.004s][info][gc,heap,coops] Heap address: 0x00000000fc000000, size: 64 MB, Compressed Oops mode: 32-bit
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46786601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档