有没有办法以编程方式获取java对象创建速率? 或者,到目前为止创建的对象的总大小,不考虑垃圾收集。
如
int size = GC.getSizeTotalObjectCreated();
// do some object creation
int size2 = GC.getSizeTotalObjectCreated();
System.out.println("TotalObjectCreated" + (size2 - size));
答案 0 :(得分:0)
可以找到使用MemoryPoolMXBean堆大小以及Eden / Survivor / Old Gen的使用细节。
可以根据给定两个时间点的自由堆大小差异来计算对象创建速率。
public void printHeapDetails() {
System.out.println("Heap size: " + Runtime.getRuntime().totalMemory());
System.out.println("Free heap size: "
+ Runtime.getRuntime().freeMemory());
for (MemoryPoolMXBean bean : ManagementFactory.getMemoryPoolMXBeans()) {
if (bean.getType() == MemoryType.HEAP)
System.out.printf("Name: %s: %s\n", bean.getName(),
bean.getUsage());
}
}