今天简单总结一下学习到的Java内存管理机制。
Java的内存管理机制主要涉及到以下几个方面:
- 方法区(Method Area):方法区是所有线程共享的内存区域。方法区中加载字节码文件,用于存储类信息、常量、静态变量等数据。
- 栈(Stack):方法运行时所进入的内存。栈中存储了局部变量、方法调用时的参数和返回地址。栈中的变量保存了堆内存中变量的访问地址。
- 堆(Heap):存放用于存储对象实例和数组。堆是垃圾回收器管理的主要区域,内存分配和回收都是自动进行的。(new出来的对象存放在堆中)
- 程序计数器(Program Counter):存储当前线程执行的字节码的行号指示器。
- 本地方法栈(Native Method Stack):本地方法栈用于支持Java调用本地方法(如C或C++编写的方法),它与Java栈类似,但用于存储本地方法的调用信息。
- 垃圾回收(Garbage Collection, GC):负责回收不再使用的对象,释放内存。垃圾回收器会定期检查堆内存中的对象,识别出不再被引用的对象,并进行回收。
eg:Car a = new car[3];
①Car类首先被加载进方法区,方法区中记录了该类的一系列属性。
②栈中加载引用变量a。
③堆中按照Car类型信息分配实例变量内存空间,并将栈中引用a指向a对象堆内存的首地址。