如何确定Java中的活动内存使用情况

时间:2013-11-25 14:07:36

标签: java memory memory-management

如何仅在java中确定引用对象的内存使用情况?即。在运行Java应用程序期间从内存使用中排除“死”对象。

我希望显示此信息,并在达到某个标准时触发警报。我还想用它来测量将文件导入我的应用程序时占用多少内存。

我的应用程序由许多进程组成,所有进程都在同一时间运行,其中一个进程将文件导入内存然后导入数据库。如果我使用Runtime.getRuntime.freeMemory或MemoryPoolMXBean测量内存使用量并且所有其他进程都在运行,由于这些进程内存使用率上升和下降,并且由于GC没有“实时”运行,内存使用情况会显示死机对象以及引用的对象。对于我当时占用记忆的内容,这并不是一个明确的迹象。

有没有办法只在任何时候确定引用对象使用的内存?

2 个答案:

答案 0 :(得分:1)

您可以查看JConsole,看看是否符合您的需要 还有VisualVM

他们让您监控应用程序,但我不知道您如何在自己的应用程序中执行此操作,以便在内存不足时触发警报。

此外,如果您希望更快地对对象进行垃圾回收,则可以使用WeakReferenceSoftReference

我发现了一篇关于如何查询Java对象大小的好文章。它有点长,所以我不能在这里发布任何一个。但是,这里是链接:http://www.javamex.com/tutorials/memory/instrumentation.shtml这是关于同一主题的{SO}问题determining java memory usage

点击:
JConsole
VisualVM

答案 1 :(得分:0)

您可以使用eclipse memory analyzer MAT