我正在开发一个大型预先存在的系统,不能使用其他问题中提到的任何外部探查器工具。
话虽如此,是否有任何编程方式让我能够打印出仍然分配了哪些变量并使用堆空间?变量名称和类型将是理想的,但任何识别变量信息都会有所帮助。
答案 0 :(得分:0)
Runtime.getRuntime().totalMemory()
。答案 1 :(得分:0)
你试过VisualVM吗?它非常具有侵入性,应该可以让你对内存使用情况有所了解。
最糟糕的情况是,你总是可以杀死项目并在核心转储上乱码(假设你在支持核心转储的操作系统上运行)。
答案 2 :(得分:0)
小心将任何代码放在 finalize 中,因为finalize中的任何put代码都可能会增加Object的生命周期;实际上,在极端情况下,它可能导致Object永远不会被GCed。