Java:为此进程分配了多少内存?

时间:2012-03-11 13:51:32

标签: java memory junit

我写了一个对内存要求很高的单元测试。它需要-Xmx2048m参数,否则获得OutOfMemoryException

有没有办法从测试中检查分配了多少内存?编写TestsHaveEnoughMemory之类的测试会很有用,并使用解释性错误消息使其失败,该消息告诉用户需要内存参数。

4 个答案:

答案 0 :(得分:1)

您可以使用运行时的maxMemory()方法来获取为进程分配多少堆。有用的链接here

答案 1 :(得分:1)

您可以通过jconsole获取与JMX API实际使用的内存相同的内容

像这样 ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();

你可以像这样得到Max ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax();

答案 2 :(得分:1)

您可以使用Runtime class来执行此操作。

试试这个;

long total_memory = Runtime.getRuntime().totalMemory();    // Total available now
long free_memory = Runtime.getRuntime().freeMemory();      // Free memory now
long max_memory = Runtime.getRuntime().maxMemory();        // Max available ever

答案 3 :(得分:0)