JVM体系结构 方法区,类加载器,堆,Java栈,本地方法栈,程序计数器,执行引擎,PC寄存器。
类加载器:
• 启动类加载器 (Bootstrap Bootstrap)
• 扩展类加载器 (Extension Extension Extension)Java Java
• 应用程序类加载器应用程序类加载器 应用程序类加载器 (AppClassLoader AppClassLoader AppClassLoader ) Java
也叫系统类加载器,加载当前应用的classpath的所有类的所有类
• 用户自定义加载器JJava.lang.ClassLoader的子类,用户可自定义
PC寄存器:
栈区:
栈存储什么 ?
方法区:
Method Area 方法区是被所有线程共享 ,所有字段和方法节码 ,以及一些特殊方法如构造函数 ,接口代码也在此定义 。简单说 ,所有定义的方法信息都保存在该区域 ,此区属于共享间。 类信息 类的版本字段方法接口
方法区与永久代
方法区永久存储区是一个常驻内域,用于放 JDK 自身所携带的 Class,Interface 的元数据,也就是说它存储运行环境必须类信息被装载进此区域不会被垃圾回收器掉的,关闭JVM才会释放此区域所占用的内存。如果出现java.lang.OutOfMemoryError:PermGen space,说明是Java 虚拟机对永久代Perm内存设置不够。一般出现这种情况,都是程序启动需要加载大量的第三方jar包。
常量池问题<待续>
堆:
一个 JVM 实例只存在一个堆内,堆内存的大小是可以调节的.类加载器读取了文件后,需要把类,方法,常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器,堆内存分为三部:
原文:https://www.cnblogs.com/wongandy/p/11440895.html