初识 Java 内存分配

67 阅读1分钟

Java 内存分配

  1. 栈 :方法运行时使用的内存,比如 main 方法运行,进行方法栈中执行
  2. 堆 :存储对象或者数组,new 来创建的,都存储在堆内存,在内存中开辟空间并产生地址(地址值如:10f87f48f)
  3. 方法区 :存储可以运行的 class 文件
  4. 本地方法栈 :JVM 在使用操作系统功能的时候使用,与开发无关
  5. 寄存器 :给 CPU 使用,与开发无关

注意:JDK8开始,取消方法区,新增元空间(Metaspace)。把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的功能放到了元空间中

堆内存中存放 StringTable (串池),StringTable (串池)存放直接进行赋值的字符串

当直接引用赋值时,系统会检查该字符串在串池中是否存在,不存在就创建新的,存在就直接使用

String s = "hello";

“hello” 被存放在 StringTable 中,而变量 s 是一个引用,s 指向了 StringTable 中的“hello”