jvm运行时数据区
方法区:
运行的常量池和虚拟机加载的类信息,比如方法名字,类的名字、接口、父类以及静态变量和一些及时编译器编译的代码数据常量
java堆:
存放对象实例数据
垃圾回收器回收最高的区域
对象实例都在堆上分配内存(这话不是绝对)
java栈
栈帧:每执行方法就会向java栈中存放一个栈帧,栈帧有如下部分:
局部变量表:存放局部变量,顶部位置为0,以此从上到下为0 1 2…
操作数栈:临时数据存储区,会弹出交付CPU进行运算
动态链接:
出入口记录:方法执行完后会接着执行哪个方法的记录
class反汇编命令:
javap -c xxx.class ->xxx.txt
jvm性能调优工具
jdk目录到bin文件夹下,运行jconsole.exe文件
堆
分为 新生代(edon)survivor(from to) 老年代(old)
当新生代对象满了后由轻gc(yanger gc)去转到from区 from区会和to区互相转换(gc算法)再转向老年区 再由full gc去回收
jvm性能调优主要优化full gc 且fullgc比yangergc更消耗时间