memory-management - 释放 Java 堆空间

标签 memory-management java-8 garbage-collection heap-memory jvm-hotspot

<分区>

我对 Java 性能有疑问。我尝试使用 GC1,但效果并不理想。我唯一的问题是为什么 JVM 保留 java 堆空间,即使它没有被使用? 正如您首先在图片中看到的那样,批处理工作在 10:30 左右完成,但没有触发垃圾收集器进行清理。所以我在 10:52 手动完成,然后释放了已用空间,但堆 (8GB) 仍由 JVM 分配。为什么 ? Java Memory Problem

最佳答案

我在做与您完全相同的事情时也看到了这种趋势(参见此处)。解释很简单:JVM 不会将内存还给操作系统,即使它有很多空闲内存。我不知道 为什么 会这样的确切细节,但这与从 OS 请求内存很昂贵的事实有关(这是超-简化)。

所以我想这里的简单答案是 - 这是正常的。

在这里!我找到了我实际阅读过 this 的地方.

关于memory-management - 释放 Java 堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43341658/

相关文章:

java - String.concat 用作 BiFunction

memory-management - 使用 Julia 更新运算符进行不必要的分配

objective-c - 来自被调用方法的 block 和自身

c++ - FFmpeg avcodec_encode_video2 访问冲突

java - 检查java中的区域语言

java 8 spring spEL 可重复绑定(bind)减慢每次迭代

memory - 调用堆栈会耗尽内存吗?

c - 需要帮助为数组的结构数组分配内存

ruby - Ruby 的 GC.stat 字段是什么意思?

java - Java VisualVM 中的 Visual GC 通过 jstadt 用于远程 Tomcat