为什么要分析应用的内存

使用 Memory Profiler查看Java堆和内存分配
Memory Profiler是Android Profiler中的一个组件,可帮助识别内存泄漏和内存流失 而导致连锁,死机甚至应用程序崩溃。它显示了应用程序内存使用的实时图形,可以捕获堆转储,强制垃圾收集以及跟踪内存分配。

为什么要分析应用的内存
Android提供了一个托管的内存环境,当它确定你的应用程序不再使用某些对象时,垃圾回收器会将未使用的内存释放回堆中。 Android如何发现未使用的内存正在不断改进,但在所有Android版本的某个时刻,系统必须暂停您的代码。大多数时候,暂停是不可思议的。但是,如果您的应用程序分配内存的速度超过系统收集内存的速度,那么在收集器释放足够的内存以满足您的分配时,您的应用程序可能会延迟。延迟可能会导致您的应用程序跳过帧,并导致可见的缓慢。

即便你的应用程序不显示缓慢,如果它泄漏内存,程序在后台时也会保留该内存。这种行为会降低系统内存性能。最终,系统被迫杀死你的应用程序进程回收内存。然后,当用户返回到您的应用程序,它必须完全重新启动。
Memory Profiler是Android Profiler中的一个组件,可帮助您识别内存泄漏和内存流失,从而导致连锁,死机甚至应用程序崩溃。它显示了应用程序内存使用的实时图形,可以捕获堆转储,强制垃圾收集以及跟踪内存分配。

Android提供了一个托管的内存环境,当它确定你的应用程序不再使用某些对象时,垃圾回收器会将未使用的内存释放回堆中。 Android如何发现未使用的内存正在不断改进,但在所有Android版本的某个时刻,系统必须暂停您的代码。大多数时候,暂停是不可思议的。但是,如果您的应用程序分配内存的速度超过系统收集内存的速度,那么在收集器释放足够的内存以满足您的分配时,您的应用程序可能会延迟。延迟可能会导致您的应用程序跳过帧,并导致可见的缓慢。

即便你的应用程序不显示缓慢,如果它泄漏内存,程序在后台时也可以保留该内存。这种行为可以通过强制不必要的垃圾回收事件来降低系统内存性能的其他部分。最终,系统被迫杀死你的应用程序进程回收内存。然后,当用户返回到您的应用程序,它必须完全重新启动。

为了帮助防止这些问题,您应该使用Memory Profiler执行以下操作:

  • 在时间轴中寻找可能导致性能问题的不良内存分配模式。
  • 在Java堆以查看哪些对象正在长期使用内存。长时间的堆转储可以帮助识别内存泄漏。
  • 在正常和极端的用户交互过程中记录内存分配,以确定代码在短时间内分配太多对象或分配泄漏对象的位置。
    (关于堆转储请参考http://www.cnblogs.com/ungshow/archive/2012/04/05/2432846.html)

资料来自[https://developer.android.com/studio/profile/memory-profiler.html#overview]
文章用于自己学习记录,如有错误,请指正

猜你喜欢

转载自blog.csdn.net/sinat_21693123/article/details/79110779