【发布时间】:2008-10-27 06:25:12
【问题描述】:
在执行过程中,java程序如何知道它使用了多少内存?
我不在乎它的效率!
【问题讨论】:
在执行过程中,java程序如何知道它使用了多少内存?
我不在乎它的效率!
【问题讨论】:
VonC 的答案是一个交互式解决方案 - 如果您想以编程方式了解,您可以使用 Runtime.totalMemory() 找出 JVM 使用的总量,并使用 Runtime.freeMemory() 找出其中还有多少可用(即它已分配给 JVM,但未在 JVM 中分配 - 新对象可以使用此内存)。
这些是实例方法 - 使用 Runtime.getRuntime() 首先获取单例实例。
【讨论】:
如果你在某处有一个 java1.6 并且你的程序在 java 1.4.2、1.5 或 1.6 中运行,你可以启动一个visualVM session,连接到你的应用程序,然后跟踪内存(等等)
(图片暂不显示,请参考Monitoring an application进行说明。)
【讨论】:
这并不准确,但为了粗略估计,只需从 Runtime.getRuntime.totalMemory() 中减去 Runtime.getRuntime.freeMemory()。
在程序开始时执行此操作以了解 JVM's 开销内存使用情况,并在稍后执行时执行此操作。
【讨论】:
java.lang.Runtime.totalMemory() 将为您提供所需的信息:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html
【讨论】: