Java:这个进程分配了多少内存?

Java:这个进程分配了多少内存?,java,memory,junit,Java,Memory,Junit,我写了一个单元测试,它对内存要求很高。它需要-Xmx2048m参数,否则获取OutOfMemoryException 有没有办法在测试中检查分配了多少内存?编写一个测试(如testshavenoughtmemory)并通过一条解释性错误消息(告诉用户需要一个内存参数)使其失败是很有用的。您可以使用运行时的方法来获取分配给进程的堆的数量。还有一个有用的链接 您可以通过jmxapi获得实际使用的内存,与您在jconsole中看到的相同 像这样 ManagementFactory.getMemoryM

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


有没有办法在测试中检查分配了多少内存?编写一个测试(如
testshavenoughtmemory
)并通过一条解释性错误消息(告诉用户需要一个内存参数)使其失败是很有用的。

您可以使用运行时的方法来获取分配给进程的堆的数量。还有一个有用的链接

您可以通过jmxapi获得实际使用的内存,与您在jconsole中看到的相同

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

你可以这样得到最大值
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax()

您可以使用

试试这个

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
请尝试MemoryMXBean@

可能重复的