很多时候单单通过 heapdump 来分析 oom 还是比较困难
因为 oom 里面只存在内存结构、而没有内存内容
有些开发设计上的做法,交易内容存储放在公共的 list/map 类型的对象中,而不是对象 Bean 中。
此时,对于交易内存溢出的情况,只看到一个大 list/map 对象过大溢出,但明确不了具体是哪个交易、占据了公共类 list/map 式对象、各自多少,就很难查明原因。
IBM JDK 可以使用 SystemDump 来得到一个含有内存对象内容的 SystemDump 。从对象字符串实际内容来寻找交易根源、原因。
那么对应 OpenJDK 的获取 SystemDump 方式是什么呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.