java虚拟机结构
- 类加载器:负责从文件系统或网络中加载Class信息,加载到方法区的内存里面
- 方法区:存放类信息,常量信息,常量池信息,包括字符串字面量和数字常量
- java堆:虚拟机启动时建立java堆,是主要的内存工作区域,几乎所有对象实例存放到java堆中,堆空间是所有线程共享的
- 直接内存:javaNIO允许java使用直接内存,提高性能,性能优于java堆,读写频繁的场合下用
- 栈:每个虚拟机线程都有一个私有的栈,栈在线程创建时候创建,保存着局部变量,方法参数,java的方法调用,返回值等
- 本地方法栈:和java栈类似,通常用c编写的方法调用
- GC:垃圾回收器
- PC:寄存器
- 执行引擎:负责执行虚拟机字节码,先编译成机器码后执行
例子:
创建一个对象User
- User的类信息,静态信息存储到方法区里面
- User类实例化出来后,存储到java堆里面,一块内存空间
- User user = new User(),当使用user时候,user.save(),这里的user存放在栈中,user对象的一个引用java堆里面的实例