gpt4 book ai didi

Java G1 垃圾收集器占用大量内存

转载 作者:行者123 更新时间:2023-11-30 07:45:01 25 4
gpt4 key购买 nike

我有一个包含大型数据库的项目。为了解析它,我使用带有 G1 垃圾收集器的 java。当程序长时间运行时,java开始消耗大量内存。但是当我检查 java 堆时,大小要小得多。例如:

  • Java 占用 20 Gb 内存
  • “jmap -histo”- 告诉我堆大约有 5 Gb 的 RAM

问题:什么占用了我剩余的 RAM?这是G1的开销吗?

编辑:这是统计数据

RAM stats of my java procces: allocated ~50gb, consumed ~20gb

jmap info: heap size ~4gb

java 进程:分配~50gb,消耗~20gb
jmap 信息:堆大小 ~4gb

最佳答案

我明白了这个问题。正如@Holger 提到的,ram 已分配给 java 进程,但没有完全填满堆。但是 G1 分配这么多内存的原因:

如果 G1 需要分配大量巨大的区域,它就会受到影响。每次对象大小 > 区域大小的 50% 时都会创建它们。它们将浪费空间,因为该区域不会创建任何其他内容。因此,如果它的大小是 51%,您将浪费该区域的 49%。更糟糕的是,如果一个区域是 2MB,而你的对象是 2.1MB,它会在第二个区域浪费 1.9MB。如果分配大对象,请调整 XX:G1HeapRegionSize。

关于Java G1 垃圾收集器占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52147644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com