gpt4 book ai didi

java - 有没有一种(简单的)方法来确定 GC 是什么对象 "removing"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:40 25 4
gpt4 key购买 nike

我有一个 Java 程序可以创建十几个数组,每个数组的长度约为 1.6 亿。数组包含原语(char、short 和 float)。在我的算法中,我注意到(通过 jprofiler)GC 在我的系统(Google Cloud 上的 Windows VM 机器,16 个 CPU 内核,64GB RAM)上运行得很好,但我无法弄清楚为什么 GC 如此运行经常消耗 80% 的总计算 CPU 功率。

所以我想:如果我能弄清楚(通过 jvm 命令/日志,或者最好通过像 jprofiler 这样的分析器)它是“垃圾收集”的精确对象,我就有机会了解正在发生的事情,或者根据我对 Java 正在做什么的更好理解来修复一个简单的问题或重新架构。 (据我所知,我已经最小化了对象创建;不过我确实使用了很多 jdk8 并行流功能,所以我不知道这是否会以某种方式导致 GC 问题。)有没有办法确定 GC 试图在任何特定时间对哪些对象(或哪些对象类型)进行垃圾回收,以便我可以更好地理解为什么 GC 运行如此频繁和如此困难?

最佳答案

在 JProfiler 中,您可以为此目的使用分配记录。

要在“已记录对象” View 中显示垃圾收集对象,请将工具栏中的 Activity 选择器更改为“垃圾收集对象”或“Activity 对象和垃圾收集对象”。分配调用树和分配热点 View 的选项对话框有一个等效的下拉列表。

关于java - 有没有一种(简单的)方法来确定 GC 是什么对象 "removing"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51602334/

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