gpt4 book ai didi

java - 为什么DDMS可以通过点击GC按钮来释放内存,而GC却不会自动调用?

转载 作者:行者123 更新时间:2023-12-01 12:05:42 26 4
gpt4 key购买 nike

我正在制作一个类似幻灯片放映的应用程序。

但是,我发现幻灯片放映 30 分钟后会自动重新启动。

通过 ps 可以看到每次切换图片时 RSS 部分都会增加。

我尝试在加载下一张图片之前添加System.gc(),甚至调用Thread.sleep()来产生当前线程。但GC从未发生过...

我认为我在代码中没有保留任何无用的引用,因为如果我将其附加到DDMS并单击GC按钮,它将很好地执行GCRSS 部分的大小会减小到进程启动时的大小。

问题是为什么DDMS可以通过点击GC按钮释放大量内存,但GC不会自动调用(只是留下无用的对象)?

最佳答案

你不能强制GC(或者至少我不知道Android上有这样的功能)。正如System.gc()所述:

Indicates to the VM that it would be a good time to run the garbage collector. Note that this is a hint only. There is no guarantee that the garbage collector will actually be run.

如果您的应用没有遇到 OutOfMemoryError 问题,那么一切都很好。否则,您会遇到内存管理问题,并且某些资源(例如图像(和其他占用内存的对象))无法正确回收/销毁。

关于java - 为什么DDMS可以通过点击GC按钮来释放内存,而GC却不会自动调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634308/

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