综述
Java和C/C++之间存在一堵由内存动态分配和垃圾收集技术的围墙。
C/C++
对于从事C/C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”,也是从事最基础工作的劳动人民——既拥有所有对象的“所有权”,又要担负每一个对象生命从开始到终结的维护责任。
Java
对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要对每一个new操作写配对的delete/free代码,也不容易出现内存泄漏和内存溢出问题,看起来虚拟机管理内存一切都很美好。然而,也正因为Java程序员将控制内存的权力交给了虚拟机,一旦出现了内存泄漏和溢出方面的问题,如果不了解虚拟机怎样使用内存,那检查错误、修正问题将会成为异常艰难的工作。