我试图在Android中模拟OutOfMemory异常。我的方法基本上是使用静态ArrayList继续添加2017-11-08 20:07:31 app ERROR ----
2017-11-08 20:07:31 app WARNING ----
2017-11-08 20:07:31 app ERROR ----
2017-11-08 20:07:31 app WARNING ----
2017-11-08 20:07:31 werkzeug WARNING * Debugger is active!
数组。
我让程序运行了一段时间,它收集了685个long[2048]
个实例。使用Android Studio的3.0分析器,堆转储看起来像这样:
long[2048]
因此,内存不会被垃圾收集。无论如何,该应用程序的堆内存仍然保持在40Mb并且不会下降。
为什么会这样?不应该是应用程序泄漏内存,就像现在没有明天一样?这次JVM做了什么伎俩?
另外,| class name | alloc count | shallow size | retained size |
| ---------- | ----------- | ------------ | ------------- |
| long[] | 685 | 9997168 | 9997168 |
和shallow size
之间有什么区别?
P.S:这是代码:
retained size