以编程方式了解java对象的创建速率

时间:2017-04-27 16:20:36

标签: java garbage-collection

有没有办法以编程方式获取java对象创建速率? 或者,到目前为止创建的对象的总大小,不考虑垃圾收集。

int size = GC.getSizeTotalObjectCreated();

// do some object creation

int size2 = GC.getSizeTotalObjectCreated();

System.out.println("TotalObjectCreated" + (size2 - size));

1 个答案:

答案 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());
    }
}