gpt4 book ai didi

java - GC 期间释放了什么?

转载 作者:行者123 更新时间:2023-11-30 09:12:41 24 4
gpt4 key购买 nike

我正在努力提高我的 Android 应用程序的性能,我得出的结论是,至少部分问题在于过度的垃圾收集。我可以使用堆工具来查看正在分配的内容,但最好是查看正在垃圾收集的内容。

有什么方法可以判断哪些对象在 Java GC 中被释放了?有可能使用库存工具吗?有第 3 方工具吗?

最佳答案

您可以通过捕获“之前”和“之后”堆转储并计算差异来做到这一点。

让这个变得困难的基本问题是 GC 不决定什么要丢弃,它决定什么要保留,所以它并不是真正适合收集列表释放的对象。在某些实现中,可能没有针对每个对象的丢弃操作。 (假设你有一个表,每个存储页都有一个位。在 GC 开始时,将所有位设置为零。对于你保留的每个对象,将它触及的页面上的位设置为 1 . 完成后,任何具有零位的页面都是免费的,可以用于新的分配。)

您可以玩一些对您创建的对象使用终结器和幻象引用的游戏,但没有适用于所有堆对象的等价物。

关于java - GC 期间释放了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445354/

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