Android Studio 中的 GC 和 java 堆分析
GC and java heap analysis in Android Studio
我正在 Android Studio 中玩耍以了解有关内存泄漏的更多信息。
我注意到,在旋转屏幕几次后,我看到 activity 的多个实例(在单击 "Initiate GC" 和 "Dump Java Heap" 之后)。
但是当我点击 2 次 "Initiate GC",然后点击 "Dump Java Heap",我看到我的 activity 和它的内部 类 只有 1 个实例.
为什么我必须在 "Initiate GC" 上单击两次才能清除 activity 个实例?我是否在泄漏内存?
编辑:我也注意到在创建一个空白的新项目时会发生这种情况 activity。所以我可能没有泄漏任何内存,但我仍然想知道为什么实例没有在第一次 GC
上被销毁
"Initiate GC" 按钮是向 GC 运行 发出的信号。
当Java GC 运行s时,不保证所有可以清除的内存引用,都会在本次GC 运行.
时被清除
这只是 GC 到 运行 的触发器。
当 GC 运行s 本身具有相同的行为时。
所以你必须多次点击 "Initiate GC" 直到你确认你担心泄漏的对象已经被 GC 清除。
那里有很多信息,例如这个话题
How to force garbage collection in Java?
我正在 Android Studio 中玩耍以了解有关内存泄漏的更多信息。
我注意到,在旋转屏幕几次后,我看到 activity 的多个实例(在单击 "Initiate GC" 和 "Dump Java Heap" 之后)。
但是当我点击 2 次 "Initiate GC",然后点击 "Dump Java Heap",我看到我的 activity 和它的内部 类 只有 1 个实例.
为什么我必须在 "Initiate GC" 上单击两次才能清除 activity 个实例?我是否在泄漏内存?
编辑:我也注意到在创建一个空白的新项目时会发生这种情况 activity。所以我可能没有泄漏任何内存,但我仍然想知道为什么实例没有在第一次 GC
上被销毁"Initiate GC" 按钮是向 GC 运行 发出的信号。 当Java GC 运行s时,不保证所有可以清除的内存引用,都会在本次GC 运行.
时被清除这只是 GC 到 运行 的触发器。 当 GC 运行s 本身具有相同的行为时。
所以你必须多次点击 "Initiate GC" 直到你确认你担心泄漏的对象已经被 GC 清除。
那里有很多信息,例如这个话题 How to force garbage collection in Java?