Java 内存区域(6 大存储位置)超清晰总结

Java 内存区域(6 大存储位置)超清晰总结 1. 寄存器Register存什么CPU 内部极高速存储存当前执行指令、操作数特点速度最快比内存快百倍程序员无法直接控制JVM/CPU 自动管理用途执行方法时临时存运算数据生命周期随指令执行创建 / 销毁2. 栈Stack⭐ 重点全称虚拟机栈 / 线程栈存什么基本数据类型变量int/boolean/double…对象引用变量User user里的user方法调用栈帧方法执行现场特点自动分配、自动释放方法执行完立即回收存取速度极快仅次于寄存器线程私有每个线程独立栈不共享生命周期随线程 / 方法创建销毁3. 堆Heap⭐ 最重要存什么所有 new 出来的对象、数组new User()new int[10]特点线程共享所有线程访问同一块堆内存垃圾回收GC主要区域内存大、速度比栈慢生命周期随 JVM 启动创建无引用时被 GC 回收口诀只要看到 new一定在堆上4. 静态存储区Method Area 方法区存什么static静态变量类信息Class 对象、方法代码运行时常量池特点线程共享全局唯一程序运行期间一直存在生命周期随 JVM 启动创建关闭销毁5. 常量存储区 ⭐ 高频考点分两块都在方法区里① 字符串常量池String Constant Pool存abc、hello这种双引号字符串特点共享、复用节省内存java运行String s1 abc; // 常量池 String s2 abc; // 直接复用不新建② final 常量区存final static编译期常量java运行public static final int NUM 10;特点不可修改全局共享6. 其他存储位置主要包含本地方法栈调用 C/C 本地方法native 方法程序计数器记录当前线程执行到哪行代码直接内存NIO 使用的堆外内存不受 GC 管理一张表秒懂区别表格区域存储内容速度管理方式共享 / 私有寄存器指令 / 运算数最快CPU 自动-栈基本类型、引用、方法栈很快自动释放私有堆new 对象、数组中等GC 回收共享静态区static 变量、类信息中等JVM 管理共享常量区字符串、final 常量快JVM 管理共享最实用口诀背会就不混淆基本类型、引用变量 → 栈new 出来的对象 → 堆static → 静态区字符串 → 常量池final static → 常量区总结栈管运行、堆管数据方法执行用栈对象存在堆静态 常量都在方法区全局共享程序员只需要重点关注栈、堆、静态区、常量池4 个即可寄存器和其他区由 JVM/CPU 自动管理不用操心