YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Simplified subtitles

← 04-04 Memory_Leaks

04-04 Memory_Leaks

Get Embed Code
13 Languages

Showing Revision 5 created 02/14/2016 by QA_SP_10_ZH_SM.

  1. Android的Java语言有个最大的优点,
  2. 是托管内存环境,
  3. 对象在创建或消除时不用特别小心。
  4. 这点尽管不错,
  5. 但也有些潜在的问题不易被发现。
  6. 划分到Android运行时的内存堆,
  7. 是根据声明类型和
  8. 利于垃圾清理操作的角度来分配的。
  9. 每一区域都有其预设的内存空间。
  10. 当一个程序所需的总存储空间接近上限,
  11. 垃圾清理就会启动,
  12. 删除掉没用的数据。
  13. 一般情况下不用特别注意垃圾清理的执行。
  14. 但是大量的清理动作不断地重复,
  15. 很快地消耗掉帧像周期。
  16. 花费在垃圾清理上的时间越多,
  17. 播放或发送录音等事情的时间就越少。
  18. 工程师们制造的内存泄漏,
  19. 是垃圾清理运行的常见因素。
  20. 内存泄漏是不能被继续使用的空间,
  21. 但是垃圾收集器却无法辨别出来。
  22. 结果它们就一直存在于堆中。
  23. 占用有效空间,永远无法被删除。
  24. 随着内存不断泄漏,
  25. 堆中的可用空间就不断变小。
  26. 这意味着为了执行常用的程序,
  27. 垃圾清理需要启动的次数越来越多。
  28. 搜索跟修复漏洞是个很棘手的问题,
  29. 有些漏洞很容易就会产生,
  30. 例如对没有使用的对象的循环引用。
  31. 不过有些也很复杂,
  32. 例如,在类别载入器安装未完成时就强制执行。
  33. 不管怎样,一个程序想要运行得又快又好,
  34. 就需留意可能存在的内存泄漏。
  35. 你的代码将允许在各种各样的设备上,
  36. 又互相结合。
  37. 不是所有的数据都占用同样的内存。
  38. 不过,好在有一个简单的工具,
  39. 可以查看Android SDK中潜在的漏洞。
  40. 来看下。