Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。
    —周志明

    在现在的绝大多数的编程语言中,开发者都是感知不到内存的分配的,这样带来的好处是开发人员不需要在业务代码的实现过程中,还关注到底层的细节,节省了大量的时间。但是万事没有绝对的好与坏,同样如此,如果开发人员长久以往,那么在实现代码的过程中,极少的关注到代码的底层细节,那么对于代码精细程度的把控上很难做的很好,而且在定位JVM的问题的时候,不是那么得心应手。因此在仰望星空的时候,也需要不断的脚踏实地,向下扎根。

    对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把内存控制的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。因此对于JVM的掌握是一个java程序员的必修课。