【问题标题】:JVM's heap size keeps increasing (but usedMemory() keeps decreasing)JVM 的堆大小不断增加(但 usedMemory() 不断减少)
【发布时间】:2019-10-29 16:41:44
【问题描述】:

我有一个在 eJDK 1.8.201 上运行的 Java 应用程序。我观察到系统报告的java进程的RSS使用率不断增加,它将达到物​​理内存512M的90%以上,我的代码将重新启动系统。另一方面,我定期从代码中打印出的usedMemory() 表明它始终在不超过物理内存的 37% 的有限范围内波动(意味着 190M)。据我了解,这意味着 JVM 没有将其可用内存返回给操作系统。这种理解正确吗?我设置了-Xmx=256M -Xms=256M,所以我认为-Xmx 选项不起作用。

您对发生的事情以及如何解决问题有任何想法吗?

该系统是ARMv7板上的嵌入式Linux。

【问题讨论】:

  • 看来越来越大的内存消耗不是堆内存。
  • 如果不是堆,那是什么?谢谢
  • 有不同的可能性,堆栈、直接缓冲区、代码缓存、只是本机代码分配的内存等
  • 它很可能被堆外内存消耗waitingforcode.com/off-heap/on-heap-off-heap-storage/read 您应该检查您的依赖关系并查看它们的堆外内存使用情况
  • 我知道在jdk中有一些工具可以dump heap,比如jhat、jcmd。有人知道 ejdk 中是否有任何工具(来自 oracle 的嵌入式 JDK)可以让我转储并分析增加的内存在哪里使用?谢谢。

标签: java linux java-8


【解决方案1】:

-Xmx=512M-Xms=512M 是无效标志。应将它们更改为 -Xmx512M-Xmx512M

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2020-12-21
    • 2013-03-02
    • 2021-10-25
    • 2010-11-29
    相关资源
    最近更新 更多