jvm笔记1
虚拟机 virtual machine
虚拟计算机 ,分为系统虚拟机和程序虚拟机
- visual Box ,VMare
- java虚拟机 专门为执行单个计算机程序而设计,
调优目的
减少gc full gc
java 虚拟机
拥有独立运行的机制,二进制的运行环境
java 平台上的多语言混合编程
特点
一次编译 处处运行
自动内存管理
自动垃圾回收
栈(线程) 局部变量 一个方法对应一个栈帧内存区域
运行时数据内存模型
方法区 ()
常量 对象指向堆
静态变量
类信息
堆
对象
区域 8 1 1
eden区
survivor
老年代
gc 垃圾收集
gc触发stw
老年代满了:FULL GC
OOM
stw
暂停线程 标记垃圾
GC Roots :可达性分析算法
- 线程栈的本地变量
- 静态变量
- 本地方法栈的变量
对象
对象头
实例数据
对齐填充
程序计数器 (线程私有)
本地方法栈(线程私有)
与其他语言交互接口
栈 (线程私有)
线程
程序计数器
栈
栈帧 方法
局部变量表 对象指针指向堆的对象
操作数栈
动态链接: 内存位置
方法出口:返回位置
java 执行流程
java编译器输入的指令流基于栈的指令集架构
跨平台、指令集小、指令多:执行性能比寄存器差
机制
对象动态年龄判断
长期存活的对象将进入老年代
老年代空间分配担保机制
jvm生命周期
虚拟机启动
引导类加载器(bootstrap class loader)创建一个初始类(initial class),这个类由虚拟机具体实现指定
执行
真真正正执行一个java进程
退出
线程调用runtime类或system类的exit方法,或runtime类的halt方法,
英语
native 本地
命令
jps 打印进程
javap
thread+ 线程
jad +class
javap -v 类
调优工具
arthas
jvisualvm