gpt4 book ai didi

java - 释放 java.util.LinkedList$Entry 内存

转载 作者:行者123 更新时间:2023-12-01 19:18:55 25 4
gpt4 key购买 nike

我有一个应用程序,其中 java.util.LinkedList$Entry 对象的数量似乎在稳步增加。该应用程序包含一个方法,该方法包含以下代码:

    final List<Boolean> correctnessList = new ArrayList<Boolean>();
final List<Double> discriminationList = new ArrayList<Double>();
final List<Double> difficultyList = new ArrayList<Double>();
final List<Double> guessingList = new ArrayList<Double>();
.
.
.
for (ItemData datum : candidateItemData) {
.
.
.
correctnessList.add(datum.isCorrect);
discriminationList.add(iRTParameter.discrimination);
difficultyList.add(iRTParameter.difficulty);
guessingList.add(iRTParameter.guessing);
.
.
.
}

包含此代码的方法被调用很多很多次。当然,每次方法返回时,List 对象都会超出范围,并且可能可用于垃圾回收。

但是,正如我所说,java.util.LinkedList$Entry 对象的数量似乎在稳步增加。

我在这里造成了内存泄漏吗?我是否应该在方法末尾调用 List 对象上的某个方法,以便 LinkedList$Entry 对象可以被垃圾收集?

最佳答案

不,您不需要对可声明的对象进行任何显式的反初始化。

最好的办法是找出为什么这些元素没有被垃圾回收。为此,请使用您喜欢的内存分析器,拍摄快照并尝试跟踪其中一些元素路径到最近的 GC 路径(我个人建议使用 VisualVM,因为它使用相对简单,并且对于许多事情来说仍然足够强大)。

此外:在您的示例中,您使用 ArrayList 作为 List 实现。该实现使用Entry对象。因此,您需要检查代码中的何处使用 LinkedList

关于java - 释放 java.util.LinkedList$Entry 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300859/

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