java虚拟机性能调优与底层原理分析浅谈

1:java程序运行图解

在这里插入图片描述
###2:java虚拟机的组成部分
在这里插入图片描述

  1. 栈(线成):储存Java运行程序的局部变量

  2. 栈帧:栈运行时储存单个方法的局部变量区域(一个栈线成运行可能运行多个方法,运行几个方法就有几个栈帧)

  3. 程序计数器:用来记录马上或者将要执行的程序的行号(位置)

  4. 操作数栈:储存方法运行时产生的临时数(例:int a=10,10就是操作数)

  5. 方法出口:就是你在一个方法中调用另一个方法执行的时候,把运行了另一个方法之后要回到的位置信息存储到方法出口中(例如在main方法中调用compute()方法,compute()方法执行之后如果要回到main中,那么这个时候main的程序从哪里开始执行?当然调用compute()方法的下一行了)

  6. 堆:java New出来的对象放在堆里 (但是用来接收对象的局部变量放在栈里,(栈里存放的是放在堆里面对象的内存地址))

  7. 方法区:(jdk1.8之后改名为元空间(主要存放常量+静态变量+类信息))

  8. 类信息:编译之后的class文件(元空间使用的是我们机器的物理内存)

  9. 本地方法栈:java底层的java方法,可以与特定语言交互,或者底层库等都是本地方法栈(说白了就是一些你调用的库或者其他(不是你的写的,是你调用的别人的(别人指底层)))

  10. 注意点:每个线程独有的包括:栈(线成),本地方法栈,程序计数器。线程共有的:堆,方法区(元空间)

  11. 堆: 当我们new对象的时候,会把对象都储存在堆年轻代的伊甸园(Eden)里,如果储存满之后,会进行一次minor gc 进行垃圾回收,回收部分对象,剩余没有回收的到s0,等下次伊甸园再次满的时候,minor gc 会扫描伊甸园和s0进行垃圾回收,然后把对象放到s1,等再满的时候,minor gc 会扫描伊甸园和s1把对象放到s0,这样周而复始,到达一定次数之后,会把对象放到老年代。(每次minor gc 没有没回收的对象年龄都会增加1)
    在这里插入图片描述

2:javaJVM调优目的

  1. 因为要减少full gc的次数
  2. 减少full gc 的时间

3:STW(Stop the world)机制

  1. JVM进行full gc时会停掉程序的所有进程,直到full gc 完成,这个就是STW机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值