变量

  • 类变量和RPC参数,尽量使用包装类型
  • 变量存储
    • 类变量 — JVM内存
    • 成员变量 — 堆内存
    • 局部变量 — 栈内存
  • new 一个对象存储在堆里,通过栈中的引用来使用
    • 一旦一个 String 对象在内存(堆)中被创建出来,就无法被修改
  • 常量池
    • 字符串常量池
    • Class常量池
      • 用于存储 编译器 生成的各种字面量和符号引用
    • 运行时常量池
      • 包括 Class常量池中的常量、字符串常量池中的内容
      • 是每个类或接口的常量在运行时的表示形式
      • 每一个运行时常量池都分配在Java虚拟机的方法区中,在类和接口被加载到虚拟机后,对应的运行时常量池就被创建出来
    • 虚拟机启动过程中,会将各个Class文件中的常量池载入到运行时常量池中。所以,Class常量池只是一个媒介场所。在JVM运行时,需要把常量池中的常量加载到内存中,加载时,对于Class的静态常量池,如果是字符串则会装到字符串常量池