Java垃圾回收
1.Java垃圾回收是由Java JRE(java 运行时环境)进行运行的。相对于C++的显示回收内存,有效的避免了内存泄漏问题。在C++中,程序员并不总是知道内存应该何时被释放。分配出去的内存无法得到及时的回收,导致系统运行速度低下,甚至导致程序瘫痪。
2.通常javaJRE会提供一个后台线程进行检测和控制,一般在CPU空闲时或者内存不足时自动进行垃圾回收。而程序员无法精确控制垃圾回收时间和顺序等。
3.Java的对内存是一个运行时数据区,用以保存类的对象。Java JVM的堆内存中存储着的是正在运行着的程序所建立的所有对象,这些对象都不需要程序员通过代码显示的释放。一般来说,堆内存的回收由垃圾回收器负责,所有的JVM实现都有一个垃圾回收器管理的堆内存。
4.垃圾回收是一种动态的存储管理技术,它自动释放不被引用的对象,按照特定的垃圾回收算法来实现垃圾回收功能。
5.C++中,对象所占的内存不会自动的释放,如果程序员不显示的释放对象所占内存的话,对象所占的内存就不能分配给其他对象,知道程序运行结束。而Java通过垃圾回收机制,当一个对象没有引用变量指向时,则回收该对象所占内存。
6.优缺点:
优点:提高编程效率,节约了程序员在存储器方面的问题:垃圾回收器保护了程序的完整性(Java语言安全性策略重要部分);
缺点:JVM需要跟踪程序中所有的对象,查看对象是否有引用变量指向。这种开销影响程序性能;其次,垃圾回收算法无法保证可以回收所有的废弃对象。
7.所有的垃圾回收有以下特点:
1.发现无用对象;2.回收无用对象所占内存;