在执行过程中,java程序如何知道它使用了多少内存?
在执行过程中,java程序如何知道它使用了多少内存?
我不在乎它的效率有多高!
During execution, how can a java program tell how much memory it is using?
I don't care how efficient it is!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
VonC 的答案是一个交互式解决方案 - 如果您想以编程方式了解,可以使用 Runtime.totalMemory() 来找出 JVM 使用的总量,以及 Runtime.freeMemory() 来找出其中有多少仍然可用(即它被分配给 JVM,但未在 JVM 内分配 - 新对象可以使用此内存)。
这些是实例方法 - 使用 Runtime.getRuntime () 首先获取单例实例。
VonC's answer is an interactive solution - if you want to know programatically, you can use Runtime.totalMemory() to find out the total amount used by the JVM, and Runtime.freeMemory() to find out how much of that is still available (i.e. it's allocated to the JVM, but not allocated within the JVM - new objects can use this memory).
These are instance methods - use Runtime.getRuntime() to first get the singleton instance.
如果您的某个地方有 java1.6 并且您的程序在 java 1.4.2、1.5 或 1.6 中运行,您可以启动 visualVM 会话,连接到您的应用程序,并跟踪内存(以及更多)
(图像暂时未显示,因此请参考 监控应用程序以获取说明。)
If you are have a java1.6 somewhere and your program is running in java 1.4.2, 1.5 or 1.6, you can launch a visualVM session, connect to your application, and follow the memory (and much more)
(The images are not displayed at the moment, so please refers to Monitoring an application for an illustration.)
这并不准确,但为了粗略估计,只需从
Runtime.getRuntime.totalMemory()
中减去Runtime.getRuntime.freeMemory()
即可。在程序开始时执行此操作,以了解 JVM 的开销内存使用情况以及执行后期的间隔情况。
This won't be exact, but for a rough estimate, just subtract
Runtime.getRuntime.freeMemory()
fromRuntime.getRuntime.totalMemory()
.Do that at the beginning of the program to get an idea of the
JVM's
overhead memory usage and at intervals latter on in the execution.java.lang.Runtime.totalMemory() 将为您提供所需的信息: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html
java.lang.Runtime.totalMemory() will give you the required info: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html