GC垃圾回收机制
Emp e;
main{
e=new Emp();
Emp e2=e;
}
Emp e;
main{
e=new Emp();
Emp e2=e;
}
注:如果这个函数运行完毕,这个函数中所有的局部变量会出栈,局部变量就无法在去执行指向堆内存中的对象,但此时堆内存中的对象还存在着,并占有一定的内存空间而无法回收,这就导致内存泄漏了。(基于C,C++是需要手动释放出这些无法使用的垃圾程序)。
注2:引用计数法去销毁无用程序(基于JAVA的GC机制自动回收垃圾程序)
GC的执行频率
GC在运行的时候,所有线程暂停。
当Java所管理内存趋于阈值时,GC
的执行频率将会加快。
GC在运行的时候,所有线程暂停。
当Java所管理内存趋于阈值时,GC
的执行频率将会加快。
Java中的内存泄漏:
java中内部类对象自动持有外部类
对象的引用。
对象的引用。
注意下列常见内存泄漏的情况:
1>new Thread(){}.start();
线程是否会执行完毕。
2>Context泄漏
注意Activity.this
1>new Thread(){}.start();
线程是否会执行完毕。
2>Context泄漏
注意Activity.this