我写了一个对内存要求很高的单元测试。它需要-Xmx2048m
参数,否则获得OutOfMemoryException
。
有没有办法从测试中检查分配了多少内存?编写TestsHaveEnoughMemory
之类的测试会很有用,并使用解释性错误消息使其失败,该消息告诉用户需要内存参数。
答案 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)