一、为什么需要了解Java虚拟机是怎样使用内存的?
对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。
不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误、修正问题将会成为一项异常艰难的工作 。
二、JVM 的主要组成部分及其作用
JVM包含两个子系统和两个组件
两个子系统为Class loader(类装载)、 Execution engine(执行引擎)
两个组件为Runtime data area(运行时数据 区)、Native Interface(本地接口)。
类型 | JVM子系统与组件 | |
---|---|---|
子系统 | Class loader(类装载) | 根据给定的全限定名类名(如: java.lang.Object)来装载class文件到Runtime data area中的method area |