深入理解JVM内存区域
一、从底层深入理解运行时数据区
-
JVM 向操作系统申请内存: JVM 第一步就是通过配置参数或者默认配置参数向操作系统申请内存空间,根据内存大小找到具体的内存分配表,然后把内存段的起始地址和终止地 址分配给 JVM,接下来 JVM 就进行内部分配。
-
JVM 获得内存空间后,会根据配置参数分配堆、栈以及方法区的内存大小**-Xms30m -Xmx30m -Xss1m -XX:MaxMetaspaceSize=30m**
-
类加载(类加载的细节后续章节会讲): 这里主要是把 class 放入方法区、还有 class 中的静态变量和常量也要放入方法区
-
执行方法及创建对象: 启动 main 线程,执行 main 方法,开始执行第一行代码。此时堆内存中会创建一个 student 对象,对象引用 student 就存放在栈