gpt4 book ai didi

java - 为什么 JVM 使用全 0 的巨型 int[]?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:38 24 4
gpt4 key购买 nike

我知道 JVM 有一个内在的开销,我想做进一步的研究来确切地了解开销是什么。

使用 YourKit 分析器,我发现有巨大的 int[] 充满了看似随机的信息。我的猜测是这些存储了一些性能指标和 JVM 用来优化应用程序的其他东西;但令我惊讶的是,所有元素的值都是 0

为了得到我的结果,我使用了下面的“什么都不做”程序,因此结果只包括 JVM 上发生的事情。

public final class Main {

public static void main(String[] args) throws InterruptedException {
Thread.sleep(Long.MAX_VALUE);
}

}

这是profiling结果的截图,有需要的我可以上传内存截图。

Screenshot from YourKit profiler

最佳答案

您可以通过检查指向这些数组的传入链接找到答案。只需右键单击一个可达数组,选择“选定对象”,然后切换到“传入引用”。

我发现sun.util.calendar.ZoneInfo里面有表, sun.util.Calendar.BaseCalendar , java.util.Currency

很难确定,但最有可能的是,JVM 使用那些无法访问的大型非零数组从 .class 文件加载 Java 字节码。 JVM 编译后不需要它们,所以它们被释放但还没有收集。

关于java - 为什么 JVM 使用全 0 的巨型 int[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39173137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com