【问题标题】:Strange memory loss in embedded java with linux带有linux的嵌入式java中奇怪的内存丢失
【发布时间】:2019-02-23 08:32:40
【问题描述】:

我正在观察运行“oracle Embedded java 1.8 (compact3)”的嵌入式 linux(2.6 内核)系统的空闲内存。 Java 运行良好,内存 (RAM) 消耗处于恒定水平。

我正在 shell 中监视 free 命令的“空闲”和“缓存”值。

如附图所示,内存保持在一定水平(蓝色是“空闲”,橙色是“缓存”值 - 所以上边界线是 linux 可用的总空闲内存)

内存每 20 秒读取一次。

现在运行 java vm 大约 7:45 小时后,出现了奇怪的可用内存下降。

我没有看到 java 堆增加,也没有看到任何加载的类 - 但 java 进程的内存增加了大约丢弃的内存量 (~4MB)。

即使在drop之后程序的行为也是正常的。

有没有人也观察到这种行为或对此有解释?

Screenshot of free linux memory

【问题讨论】:

    标签: java memory embedded-linux


    【解决方案1】:

    这可能是由于堆区域增加以完成 Java VM 的某些分配(由于内部需要,或代表内部运行的程序),而以前映射的堆区域无法完成。大多数进程内内存管理器在程序释放内存后不会将内存返回给操作系统(通过取消映射部分堆区域),而是保留内存以供将来使用。

    如果内存消耗随着时间的推移不断增加,这可能是内存泄漏的迹象。但通常不需要担心只增加一次进程大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      相关资源
      最近更新 更多