Java开发人员并不需要像C/C++开发人员,需要时刻注意内存的分配和释放,而是全权交给虚拟机(JVM)去管理,自然关于内存管理或是内存的模型、结构对Java开发来说就是一个“黑箱”。
两眼一抹黑似乎也不影响写Java的代码。但我也说过,了解一些内部的机制或者是自己认为不重要的东西,也许会很有帮助。
最简单的,我们也应该了解Java的堆和栈。而我们所谓的内存管理,基本上指对堆内存的管理,那堆内存在JVM的内存结构中的那个位置呢?
什么是JVM内存
============
Java源代码文件(.java)会被Java编译器编译为字节码文件(.class),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。
JVM在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。
JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。
了解清楚JVM的内存结构会更有助于我们理解Java的内存模型