JVM 概述

结构

方法区

存放class模板、和static有关的变量和方法

  • 线程共享
  • jdk8 之后被元空间取代。移动到堆外内存(字符串常量池依旧在堆中,增强字符串回收效率)
    在这里插入图片描述

堆 heap

实例化的类对象在堆里面

  • 线程共享

分区

  • 新生代
    • 伊甸区:新生对象都在伊甸区
    • s0(from)和s1(to):两个大小相同,可以互换的区域。每次Minor GC会将伊甸区和s0的对象复制到s1区,并交换s0和s1。(to区域一直是空的
  • 老年代:新生代对象经过指定次数Minor GC后就会晋升到老年代

虚拟机栈 stack

栈中只保存基本数据类型的数据和自定义对象的引用(不是对象)

  • 线程私有

堆 虚拟机栈 方法区的交互

在这里插入图片描述

GC

只在堆和方法区中进行

评估GC的性能指标

  • 吞吐量:程序代码运行时间占总时间的比例(总运行时间 = 程序的运行时间 + 内存回收的时间)
  • 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间(stw stop the world 时间)
  • 内存大小:堆内存大小

吞吐量、暂停时间、内存占用 这三者共同构成一个不可能三角。因为随着硬件发展,内存占用多些越来越能容忍。不幸的是”高吞吐量”和”低暂停时间”是一对相互竞争的目标(矛盾)。

类型

  • Minor GC :新生代GC
  • Full GC:老年
    在这里插入图片描述
串行收集器

Serial、Serial old 都是串行收集器,效率低,stw时间长。

并行收集器
<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值