我一直看到原生 Windows 应用程序的内存查看器,但 Java 应用程序在 Java 虚拟机的堆中运行。
那么我们如何查看正在运行的 Java 应用程序的内存内部,我们如何查看堆栈中的内容。
是否有任何应用程序可以监视 Java 应用程序内存 是否可以编写一个应用程序来这样做?在 Visual C# 中。
感谢您的帮助。
最佳答案
实际上可以通过堆转储查看 Java 内存。 您将遇到的几乎每个 JVM 都能够执行它们,并且有可用的程序来分析它们。开始编写处理堆转储的程序的一个好地方可能是查看其中一个程序的代码......
这个博客似乎有一些关于这个主题的信息: http://javaworks.wordpress.com/2009/12/03/jvm-heap-dumps-generation-and-analysis/
这是 Oracle 的 Java 堆分析工具: http://download.oracle.com/javase/6/docs/technotes/tools/share/jhat.html
编辑:仅供引用,可以假设堆栈中的内容不多。原语大概分配在那里(考虑到缺少 new
),但对象总是分配在堆上。一个有争议的异常(exception)是 Java HotSpot VM,我听说它确实在堆栈上分配一些对象以提高性能。我想你可能是说堆。 ^__^
关于java - 有谁知道查看 Java 应用程序内存的应用程序?或者有一些简单的方法来创建一个应用程序来做这种事情?在 C# 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294629/