JVM的快速入门

一、JVM知识点

JVM思维导图
JVM思维导图简化版

1、jvm的位置
在这里插入图片描述
2、JVM的体系结构
在这里插入图片描述
栈肯定不会存在垃圾;jvm的调优主要是在对堆和方法区;
在这里插入图片描述
3、 类加载器
作用:加载Class文件
在这里插入图片描述
1.虚拟机自带的加载器
2.启动类(根)加载器
3.扩展类加载器
4.应用程序加载器

双亲委派机制
在这里插入图片描述
4、沙箱安全机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、native
在这里插入图片描述
6、pc寄存器
在这里插入图片描述
7、方法区
在这里插入图片描述
在这里插入图片描述
8、栈
栈:栈内存,主管程序的运行,生命周期和线程同步;线程结束,栈内存也就释放,对于栈来说,不存在垃圾回收问题;一旦线程结束,栈就是over!
栈: 8大基本类型+对象引用+ 实例方法
栈运行的原理:栈帧
栈满了:StackOverflowError

栈+堆+方法区:交互关系:
在这里插入图片描述
9、三种JVM

  • Sun公司:Java HotSpot™ 64-Bit Server VM (build 25.0-b70, mixed mode)
  • BEA:JRockit
  • IBM:J9VM

10、堆
Heap,一个JVM只有一个堆内存,堆内存的大小是可以调节的。
类加载器读取了类文件后,一般会把什么东西放入堆中?类,方法,常量,变量,保存外卖所有的引用类型的真实对象。
堆中分为:

  • 新生区
  • 养老区
  • 永久区
    在这里插入图片描述
    GC垃圾回收,主要是在新生区和养老区。

假设内存满了,OOM,堆内存不够了:
在这里插入图片描述
在jdk8以后永久存储区改了一个名字元空间。

新生区

  • 类:诞生和成长的地方,甚至死亡。
  • 伊甸园,所有的对象都是在伊甸园区new出来的!
  • 幸存者区(0,1)

老年区

永久区
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
元空间:逻辑上存在;物理上不存在;

默认情况下:分配的总内存是电脑内存的1/4,而初始化的内存:1/64
OOM情况的解决方法:

  • 尝试扩大堆内存大小
  • 分析内存,看一下哪个地方出现了问题(专用工具)

工具调优(JProfiler):
使用:idea安装插件,下载JProfiler,idea添加JProfiler,写配置信息,遇到问题看dump文件
在这里插入图片描述
在这里插入图片描述
10、GC
在这里插入图片描述
在这里插入图片描述
复制算法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
标记清除算法:
在这里插入图片描述
优点:不需要额外的空间!
缺点:两次扫描,严重浪费时间,会产生内存碎片

标记压缩(优化标记清除算法):
在这里插入图片描述
标记清除压缩:多标记几次以后再压缩。

在这里插入图片描述
在这里插入图片描述

JMM:java memory model

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值