[英]Java monitor memory usage of unit test
我试图将每个单元测试使用的内存存储到数据库中。 所以我用以下方法计算测试前后的可用内存:
Runtime.getRuntime().freeMemory()
如果在测试期间有垃圾收集,我可以通过以下方式对其进行计数:
//returns garbage collection count
private long calculateGarbageCollectionCount(){
List<GarbageCollectorMXBean> garbageCollectorMXBean = ManagementFactory.getGarbageCollectorMXBeans();
return garbageCollectorMXBean.get(garbageCollectorMXBean.size()-1).getCollectionCount();
}
现在我需要一个想法,平均而言,垃圾回收可以释放多少内存来执行以下操作:
gcCount*memoryReleased+freeMemoryAtStart-freeMemoryAtEnd
是否至少有一个粗略的估计,即在垃圾回收期间释放了多少内存? 我尝试将MemoryPoolMXBean与getPeak方法一起使用,但是获取的值使我感到困惑。 它大于JVM拥有的总内存。
找到了一个有用的有用的类: https : //github.com/Netflix/spectator/blob/master/spectator-ext-gc/src/main/java/com/netflix/spectator/gc/GcLogger.java
通过此类,可以捕获垃圾收集事件,从而收集更多事件信息。
作为一个粗略的估计,一个单元测试使用了多少内存,我在开始之前会触发垃圾回收。 计算测试前后的可用内存,并总结垃圾回收期间释放了多少内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.