有没有办法以编程方式获取java对象创建率? 或者,到目前为止创建的对象的总大小,不考虑垃圾收集。
比如
int size = GC.getSizeTotalObjectCreated();
// do some object creation
int size2 = GC.getSizeTotalObjectCreated();
System.out.println("TotalObjectCreated" + (size2 - size));
最佳答案
可以找到使用 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());
}
}
关于java - 以编程方式了解java对象创建率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663121/