JVM 运行内存的整体流程
- JVM 向操作系统申请内存
- JVM 获得内存空间后,会根据配置参数分配堆、栈以及方法区的内存大小
Xms30m -Xmx30m -Xss1m -XX:MaxMetaspaceSize=30m - 类加载
这里主要是把 class 放入方法区、还有 class 中的静态变量和常量也要放入方法区 - 执行方法及创建对象
常量池
- Class 常量池(静态常量池)
在 class 文件中除了有类的版本、字段、方法和接口等描述信息外,还有一项信息是常量池 (Constant Pool Table),用于存放编译期间生成的各种字面量和符号引用。
字面量:String a=“b” ,这里“b”就是字符串字面量,同样类推还有整数字面值、浮点类型字面量、字符字面量。
符号引用 :符号引用以一组符号来描述所引用的目标。
- 运行时常量池
运行时常量池是在类加载完成之后,将== Class 常量池中的符号引用替换成直接引用==。
- 字符串常量池