传统的C/C++等编程语言需要显式的回收分配的内存,容易造成内存泄露或系统崩溃。
Java的内存分配和回收由JRE在后台自动进行,而回收不再使用的工作,则称为垃圾回收(Garbage Collection,GC)。
通常,JRE会提供一个后台线程进行检测,当CPU空闲或内存不足时,自动进行垃圾回收。
堆内存
Java的堆内存是运行时数据区,用以保存类的实例(对象),由GC负责回收。
当没有对象引用指向原先分配给某个对象的内存时,该内存可以被回收。除了释放没用的对象占用的内存,GC还可以清除内存记录碎片。
GC的工作目标是JVM堆内存,对其他物理资源,如数据库连接、磁盘IO等资源无能为力。