jvm笔记1

虚拟机 virtual machine

虚拟计算机 ,分为系统虚拟机和程序虚拟机

  1. visual Box ,VMare
  2. java虚拟机 专门为执行单个计算机程序而设计,

调优目的

减少gc full gc

java 虚拟机

拥有独立运行的机制,二进制的运行环境

java 平台上的多语言混合编程

特点

一次编译 处处运行
自动内存管理
自动垃圾回收
jvm笔记1
jvm笔记1

栈(线程) 局部变量 一个方法对应一个栈帧内存区域

运行时数据内存模型

方法区 ()

常量 对象指向堆
静态变量
类信息

对象

区域 8 1 1

eden区
survivor
老年代

gc 垃圾收集

gc触发stw
老年代满了:FULL GC
OOM

stw

暂停线程 标记垃圾

GC Roots :可达性分析算法

  1. 线程栈的本地变量
  2. 静态变量
  3. 本地方法栈的变量
对象

对象头
实例数据
对齐填充

程序计数器 (线程私有)

本地方法栈(线程私有)

与其他语言交互接口

栈 (线程私有)

线程

程序计数器

栈帧 方法

局部变量表 对象指针指向堆的对象
操作数栈
动态链接: 内存位置
方法出口:返回位置

java 执行流程

jvm笔记1

java编译器输入的指令流基于栈的指令集架构

跨平台、指令集小、指令多:执行性能比寄存器差

机制

对象动态年龄判断
长期存活的对象将进入老年代
老年代空间分配担保机制

jvm生命周期

虚拟机启动

引导类加载器(bootstrap class loader)创建一个初始类(initial class),这个类由虚拟机具体实现指定

执行

真真正正执行一个java进程

退出

线程调用runtime类或system类的exit方法,或runtime类的halt方法,

英语

native 本地

命令

jps 打印进程
javap
thread+ 线程
jad +class
javap -v 类

调优工具

arthas
jvisualvm

eg

jvm笔记1