我通过部署自己的类来运行JBOSS服务器.现在我开始对我的应用程序进行一些操作.现在我想知道我的应用程序在执行操作之前和之后使用的内存.请在这方面支持我
通过使用MemoryMXBean(通过调用ManagementFactory.getMemoryMXBean() 以及[Runtime.getRuntime()] 检索(http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html #getRuntime())的方法[.totalMemory()](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#totalMemory()),[. maxMemory()](http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#maxMemory())和[.freeMemory()](http:// java .sun.com/J2SE/1.4.2 /文档/ API /爪哇/郎/ Runtime.html#freeMemory())
请注意,这不是一个确切的技术:在创建新对象时,可能会分配其他临时对象,这将无法为您提供准确的度量.我们知道,java垃圾收集不能保证,所以你不一定能做到这一点来消除死对象.
如果您进行研究,您会发现大多数尝试进行这些测量的代码都会有Runtime.gc()调用和休眠等循环,以确保测量准确无误.这只适用于某些JVM实现......
在应用服务器/已部署的应用程序中,您可能只会在分配堆并且gc触发时获得总测量/使用量更改,但它应该足够了.[我假设你不会实现gc()并在生产代码中睡觉:)]