最大限度地减少内存泄漏问题并优化我的应用程序。我想确保我的应用程序的稳定性,为此我正在研究内存分配和释放的问题。
我在循环内创建一个数据类对象并将其添加到列表中,之后我不需要该数据类对象,因此我想从内存中删除该对象而不关闭屏幕或 Activity 。
为此,在将对象添加到列表后,我调用 System.gc()。
是否会因为垃圾回收调用过多而影响应用程序?
最佳答案
垃圾收集器仅收集代码中不再引用的对象。通过将其添加到列表,引用将存储在列表中,并且只要该列表仍然被引用,该引用就会被保留。如果您希望 GC 收集您的对象,则必须发生以下情况之一(假设该对象和列表都没有在其他任何地方被引用):
- 该对象已从列表中删除
- 列表超出范围
- 列表变量设置为
null
在这种情况下,GC 将收集该对象。一般来说,系统会很智能地判断何时调用 GC,因此手动调用 GC 会增加程序的复杂性,同时降低程序的性能(因为 GC 也需要 CPU 时间),因此不建议这样做。
如果您希望避免内存泄漏:
- 确保您的对象没有过时的引用
- 使用
弱引用
关于java - 如果我在循环内以编程方式运行垃圾收集器。它会影响我的 Android 应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064678/