内存泄露的定义:
- 内存泄露是指申请了内存,但并没有释放内存。
- 内存泄露一般需要性能测试才能检测出,如压力测试、负载测试、稳定性测试
-
Java的内存泄露主要发生在如图框出的部分:Heap(堆内存)、Stack(栈内存),特别是Heap
Java内存管理:
- 内存的分配————new
- 内存的释放————gc
- 区分“不再引用"和“不再需要”
程序员通过new对象申请内存,在java中程序员并不需要释放内存
在C与C++编程时需要手动申请和释放内存,而java有专门的内存回收机制,会直接回收不再引用的资源,但是程序员如果没有将不再需要的变成不再引用的资源,则占用内存过多,慢慢的就会造成内存溢出
内存分析可参考:
http://blog.csdn.net/jenniferyayun/article/details/49778239
如果将s1=s2;此时S1和S2 都将指向s2指向的内存空间了,则堆中s1原本指向的内存空间就变成垃圾了,java虚拟机将回收这个对象
android常见的内存泄露:
在开发中要时刻注意