【问题标题】:Live Memory not matching Core Dumped Memory实时内存与核心转储内存不匹配
【发布时间】:2010-12-20 14:11:16
【问题描述】:

我们正在尝试调查应用程序的内存损坏,我们看到的确切问题可以在应用程序的实时内存中看到(即已添加的调试代码显示损坏的信息),但是当我们查看通过此时获取的核心转储,数据没有损坏。

根据我对核心转储过程的初步了解,这可能是由于操作系统刷新每个缓冲区、完成部分写入等等。

谁能详细说明到底发生了什么,以及是否有办法确定导致损坏的原因?

mprotect() 阻止所有写入,而不仅仅是非拥有进程,这是我们的应用程序具有大量 R/W 访问权限的数据(并且仅在新机器上存在问题)

【问题讨论】:

  • 转储文件是来自与调试代码完全相同的可执行文件,还是来自不同的发布版本?
  • 一模一样,是运行在Java上的Websphere应用
  • 哦,那么您可能需要提供更多环境细节,因为 Java 代码无法自行造成内存损坏。
  • 我知道,我们认为这是机器上的内存“同步”问题,没有正确刷新,但试图证明这是我需要帮助的一点。它是在新的戴尔 R710 硬件上运行的 Linux 操作系统
  • 这不太可能。除非您在代码中使用 JNI,否则内存损坏也不太可能发生。按大致的可能性顺序:您的 Java 代码是错误的;配置问题;你误解了一个 API;网络问题; Websphere 中存在错误;您的 JVM 中存在错误;您的操作系统存在错误;您的硬件需要退款。

标签: java memory corruption memory-corruption


【解决方案1】:

原来是 RHEL4 和它运行的内核,客户升级到 RHEL5 和最新的内核,问题就消失了

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2020-11-28
    • 2020-01-31
    • 1970-01-01
    相关资源
    最近更新 更多