内存结构简图:
JVM内存结构简图(尚硅谷宋红康)虚拟机JVM加载程序过程:
JVM详细图_en(尚硅谷 宋红康) JVM详细图_cn(尚硅谷 宋红康)1、类加载子系统把编译后的字节码文件(.class)加载到内存中
2、方法区:生成大的类的对象,初始化静态方法和变量,存放到方法区
3、执行引擎开始按照字节码指令,依次执行。栈去局部变量表中取数据,操作入栈,或者在堆空间中创建对象。程序在依次执行过程中,会用到程序计数器,或则好本地的方法栈
类加载子系统:
1、加载(Loading)
引导类加载器、扩展累加载器、应用加载器。扩展:自定义加载器
2、链接(Linking)
验证、准备、解析
3、初始化(Initiallzation)
运行时数据区:
程序计数器:每一个线程一份
栈区:每一个线程一份,栈帧(局部变量表(Local variables)、操作数栈(Operate stack)、动态链接(Dynamic Linking)、方法返回地址(return address))
本地方法栈:区别于栈,本地方法接口API调用
堆区:创建的JAVA对象,内存中最大的空间,GC重点考虑的空间
(Hotspot才有)方法区:类、常量、域、方法信息等
执行引擎:
解释器(Interpreter)
即时编译器(JIT Compiler)
垃圾回收器(Garbage Collection)
网友评论