一、 JAVA程序运行逻辑分析
示例图:
![](/i/l/?n=23&i=blog/2629818/202303/2629818-20230302233312073-1125110094.png)
类加载器(Class Loader):负责将编译好的.class字节码文件加载到内存中,使得JVM可以实例化或以其他方式使用加载后的类。类加载器支持在运行时的动态加载,动态加载可以节省内存空间,灵活地从本地或者网络上加载类
方法区/元数据区:
方法区也就是我们常说的永久代区域,里面存储着Java类信息、常量池、静态变量等数据,方法区占用的内存区域在JVM中是线程共享的。
在JDK1.8及以后的版本中,方法区已经被移除,取而代之的是元数据区和本地内存,类的元数据信息直接存放到JVM管理的本地内存中。需要注意的是,本地内存不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。常量池、静态变量等数据则存放到了Java堆(Heap)中。
Java虚拟机栈/本地方法栈 /程序计数器:线程私有的,和线程运行代码直接相关
堆区:
- Java是一门面向对象的程序设计语言,而JVM堆区是真正存储Java对象实例的内存区域。
- 堆的大小不等于JVM可同时存储这么多数据,因为要做垃圾回收