jvm笔记1

虚拟机 virtual machine

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

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

调优目的

减少gc full gc

java 虚拟机

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

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

特点

一次编译 处处运行
自动内存管理
自动垃圾回收
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBQDTMKP-1603977976955)(en-resource://database/4949:1)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Ds9DBQq-1603977976959)(en-resource://database/4951:1)]
在这里插入图片描述

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

运行时数据内存模型

方法区 ()

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

对象

区域 8 1 1

eden区
survivor
老年代

gc 垃圾收集

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

stw

暂停线程 标记垃圾

GC Roots :可达性分析算法

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

对象头
实例数据
对齐填充

程序计数器 (线程私有)

本地方法栈(线程私有)

与其他语言交互接口

栈 (线程私有)

线程

程序计数器

栈帧 方法

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

java 执行流程

在这里插入图片描述

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

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

机制

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

jvm生命周期

虚拟机启动

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

执行

真真正正执行一个java进程

退出

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

英语

native 本地

命令

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

调优工具

arthas
jvisualvm

eg

在这里插入图片描述