28

在执行期间,Java 程序如何知道它使用了多少内存?

我不在乎它的效率如何!

4

4 回答 4

31

VonC 的答案是一个交互式解决方案 - 如果您想以编程方式了解,您可以使用Runtime.totalMemory()找出 JVM 使用的总量,并使用Runtime.freeMemory()找出仍有多少可用(即它已分配JVM,但未在 JVM 内分配- 新对象可以使用此内存)。

这些是实例方法 - 使用Runtime.getRuntime()首先获取单例实例。

于 2008-10-27T07:07:36.000 回答
4

如果你在某处有一个 java1.6 并且你的程序在 java 1.4.2、1.5 或 1.6 中运行,你可以启动一个visualVM 会话,连接到你的应用程序,并跟踪内存(等等)

使用 Visual VM 监控应用程序的图像

(图片暂时不显示,请参考监控应用说明。)

于 2008-10-27T06:48:10.377 回答
4

这并不准确,但粗略估计,只需减去Runtime.getRuntime.freeMemory(). Runtime.getRuntime.totalMemory()在程序开始时执行此操作以了解JVM's开销内存使用情况,并在稍后执行时执行此操作。

于 2008-10-27T07:01:57.993 回答
-1

java.lang.Runtime.totalMemory() 将为您提供所需的信息:http: //java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html

于 2008-10-27T07:00:38.557 回答