【问题标题】:Does major garbage collection require memory outside of the JVM?主要垃圾回收是否需要 JVM 之外的内存?
【发布时间】:2023-03-24 10:01:01
【问题描述】:

在主要垃圾回收期间,机器是否需要超出 JVM 分配量的内存?

我问的原因是我们有一个带有 6 GB 内存的盒子,运行 2 个 jvm,每个使用大约 2.6 GB 的堆/内存。有时在主要垃圾收集(并发标记扫描和压缩)之前,整个内存中只有几百兆的可用内存。

我只是想知道在这种情况下是否需要更多的内存,理论上。

【问题讨论】:

  • 你使用的是哪个JVM?
  • 这取决于 JVM 实现者。但请注意,几乎所有 JVM 在 Java GC 堆之上都有一个常规的 C 堆。
  • @AlexRodrigues 热点 64 位
  • @HotLicks 知道了,我想我很好奇,即使没有这种情况,垃圾收集器需要多少内存。
  • @user3457245 我想JVM的最大内存使用量正是你设置的。在您的情况下,您有 2 个 JVM,其中 2.6 gigs = 5.2 gigs,加上您的操作系统的开销,所以您只剩下几百个...

标签: java garbage-collection jvm


【解决方案1】:

“每个 jvm 使用大约 2.6 gigs 的堆/内存”。

看起来您的 Xmx 为 2.6 GB。但是 Xmx(Heap Memory) 不是 JVM 使用的唯一内存区域,因此 1 个 JVM 使用的内存将是 2.6 +,您可能会觉得使用了 JVM 之外的内存。

JVM 内存由以下部分组成:

  • 堆内存,用于存储 Java 对象
  • 非堆内存,Java 使用它来存储加载的类和 其他元数据
  • JVM 代码本身、JVM 内部结构、加载的分析器代理代码 和数据等。

Details.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多