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

标签 java garbage-collection

有没有办法以编程方式获取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/

相关文章:

java - JMapViewer,绘制到OSM并避免两次调用MouseClick事件

python - 为什么python无法确定根并使用标记扫描?

c++ - 控制Lua5.1的垃圾收集器

javascript - 实例未被垃圾回收

Java G1 GC : Programmatically finding the number of humongous regions before/after GC

java - JAXB - TreeGrid 解决 XmlElement 冲突

java - 在不同的 JAR 中加载两个类

java - 基于正则表达式的链接未按预期工作

java - 如何重置构造函数的 getter 和 setter

c# - 由于 Window.EfectiveValues 保留导致内存泄漏