Jvm虚拟机的内存有 栈 堆 方法区 本地方法区 寄存器等组成
栈 :存储局部变量已经代码的执行
特点:先进后出,先执行栈顶元素
堆:存储所有的new出来的对象.
当堆中的数据 没有指针指向的时候 会被当成垃圾 由GC回收
方法区:存储字节码文件
.class文件
本地方法区 系统相关
寄存器 cpu
![](https://img.haomeiwen.com/i27732789/18bf31b81fdcee0d.png)
1_当我们运行.java文件的时候,通过编译器讲.java文件编译成.class文件
2_通过类加载器 将class文件用到的类 加载到方法区(此时将 arraydemo加载到方法区)
3_当JVM调用main方法的时候,将main方法进行一个压栈(执行哪个方法就会压栈)
4_从main方法当中一行一行读取代码,当读到 int[] arr =new int[3]的时候
会在mian方法的栈内存中开辟一个空间 存储变量 arr 在堆内存中开辟一个空间存储new 对象
5_将new 对象的 地址值返回给arr
网友评论