所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。Java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。由于Java 使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根 ...
分类:
编程语言 时间:
2017-03-29 23:03:43
阅读次数:
239
前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary、MAT等工具来检测应用程序是否存在内存泄漏,MAT是一款强大的内存分析工具,功能繁多而复杂,而LeakCanary则 ...
分类:
移动开发 时间:
2017-03-29 22:41:29
阅读次数:
229
1、Java语言最显著的特点就是引入了垃圾回收机制,它使java程序员在编写程序时不再考虑内存管理的问题。 2、由于有这个垃圾回收机制,java中的对象不再有“作用域”的概念,只有引用的对象才有“作用域”。 3、垃圾回收机制有效的防止了内存泄露,可以有效的使用可使用的内存。 4、垃圾回收器通常作为一 ...
分类:
编程语言 时间:
2017-03-29 18:43:20
阅读次数:
250
非静态内部类的静态实例由于内部类默认持有外部类的引用,而静态实例属于类。所以,当外部类被销毁时,内部类仍然持有外部类的引用,致使外部类无法被GC回收。因此造成内存泄露。 类的静态变量持有大数据对象静态变量长期维持到大数据对象的引用,阻止垃圾回收。 资源对象未关闭资源性对象如Cursor、Stream ...
分类:
移动开发 时间:
2017-03-27 21:28:53
阅读次数:
240
上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出来。性能优化的重要性不需要在强调,但是要强调一下,我并不是一个老司机,嘿嘿!没用过这个工具的,请睁大 ...
分类:
移动开发 时间:
2017-03-27 19:30:39
阅读次数:
272
测试大块 测试子块 工具或命令 用途和说明 APP前端 Android端 应用性能(CPU) 命令:adb shell(dumpsys cpuinfo) 测试在空闲、中等消耗、高消耗下cpu的运行情况 命令:top -m 5 -s cpu 应用性能(内存) 命令:adb shell(dumpsys ...
分类:
其他好文 时间:
2017-03-25 23:57:11
阅读次数:
904
一、接着上一篇通过NSThread可以方便的创建一个线程,并且启动线程的Runloop,在线程体中执行一个while循环 然后我们就可以方便得利用这个线程了 二、那我们应该如何正确结束一个NSThread呢 NSThread结束可以调用两个方法,一个是对象方法-[Thread cancel],这个方 ...
分类:
移动开发 时间:
2017-03-25 13:57:08
阅读次数:
338
在C++中学习过程中,我们都知道:delete和new必须配对使用(一一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的delete去哪儿了?!注:本文暂不涉及智能指针(sm..
分类:
其他好文 时间:
2017-03-24 16:08:47
阅读次数:
177
ARC(Automatic Reference Counting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。下面是你会经常用来去创建一个View的代码段: UIVi ...
分类:
移动开发 时间:
2017-03-23 12:20:21
阅读次数:
306
高效的JavaScript Web应用必须流畅,快速。与用户交互的任何应用程序,都需要考虑如何确保内存有效使用,因为如果消耗过多,页面就会崩溃,迫使用户重新加载。而你只能躲在角落哭泣。自动垃圾收集是不能代替有效的内存管理的,特别是在大型,长时间运行的Web应用程序中。在这次讲座中,我们将演示如何通过... ...
分类:
编程语言 时间:
2017-03-22 16:18:04
阅读次数:
191