JVM笔记:
1.JVM内部结构:方法区、JAVA堆、JAVA栈、本地方法栈、垃圾收集器、PC寄存器、执行引擎、本地方法接口。
PC寄存器:每个线程一个PC寄存器,
指向下一条指令的地址
方法区:保存装载的类信息,通常和永久区(Perm)关联在一起
类型的常量区(字符串常量信息在JDK7后移动到了堆)
字段、方法信息
方法字节码
线程共享的
JAVA堆:new出来的对象都保存在JAVA堆中,
所有线程全局共享JAVA堆
GC的主要工作空间
JAVA栈:线程私有(同步进程)
栈由一系列帧组成(因此JAVA栈也叫作帧栈)
帧保存一个方法的局部变量、操作数栈、常量池指针
每一次方法调用创建一个帧,并压栈
防止内存泄露方法:栈上分配(创建对象不new)
- 小对象,无逃逸情况,可以分配在栈上
1.JVM内部结构:方法区、JAVA堆、JAVA栈、本地方法栈、垃圾收集器、PC寄存器、执行引擎、本地方法接口。
PC寄存器:每个线程一个PC寄存器,
指向下一条指令的地址
方法区:保存装载的类信息,通常和永久区(Perm)关联在一起
类型的常量区(字符串常量信息在JDK7后移动到了堆)
字段、方法信息
方法字节码
线程共享的
JAVA堆:new出来的对象都保存在JAVA堆中,
所有线程全局共享JAVA堆
GC的主要工作空间
JAVA栈:线程私有(同步进程)
栈由一系列帧组成(因此JAVA栈也叫作帧栈)
帧保存一个方法的局部变量、操作数栈、常量池指针
每一次方法调用创建一个帧,并压栈
防止内存泄露方法:栈上分配(创建对象不new)
- 小对象,无逃逸情况,可以分配在栈上