离线分析jvm内存使用的方法有很多种,比如MAT,jmap。但是,有没有办法在运行时测量代码中的内存使用情况?任何建议将不胜感激。
答案 0 :(得分:1)
请参阅官方Java文档,即https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html
例如:
Runtime.getRuntime().totalMemory() // total memory available
Runtime.getRuntime().freeMemory() // free memory
here是一篇可能有用的文章
答案 1 :(得分:1)
非常感谢任何建议。
既然你已经征求了建议......我的建议是 - 除了在开发时间探索选项之外,不要尝试这样做。
如果您尝试编写估计对象大小并利用此信息来调整其行为的程序,则很可能会遇到各种性能问题,并花费大量时间来确定如何避免它们。而且你的应用程序将变得更加复杂,并且难以维护。
另一点建议:不要过分关注空间物体在内存中占用多少空间。除非您的平台上有非常大的数据结构或非常少的内存,否则在这里保存几个字节并没有什么区别。
话虽如此,这个Q& A很好地涵盖了这个话题: