jvm基础

1 篇文章 0 订阅
本文详细解析了Java类执行流程,包括类加载器的Bootstrap、Ext和AppClassLoader的作用,以及双亲委派模式的优势。同时介绍了Java堆内存区域,如方法区、栈区、本地方法区和程序计数器。重点讲解了新生代和老年代的划分,以及轻GC和重GC的区别和触发条件。
摘要由CSDN通过智能技术生成

一、Java类执行的流程:

第4步运行时数据区
方法区
栈区
本地方法区
堆区
程序计数统计器
第1步.java文件
第2步.clas文件
第3步 类加载器
第5-1步 执行引擎
第5-2步 执行引擎
3、类加载器

1.BootstrapClassLoader
纯C++实现的类加载器,没有对应的Java类,主要加载的是jre/lib/目录下的核心库

2.ExtClassLoader
类的全名是sun.misc.Launcher$ExtClassLoader,主要加载的是jre/lib/ext/目录下的扩展包

3.AppClassLoader
类的全名是sun.misc.Launcher$AppClassLoader,主要加载的是CLASSPATH路径下的包
那么这样由什么好处呢?
采用双亲委派模式的是好处是Java类随着它的类加载器一起具备了一种带有优先级的层次关系,通过这种层级关可以避免类的重复加载,当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次。其次是考虑到安全因素,java核心api中定义类型不会被随意替换,假设通过网络传递一个名为java.lang.Integer的类,通过双亲委托模式传递到启动类加载器,而启动类加载器在核心Java API发现这个名字的类,发现该类已被加载,并不会重新加载网络传递的过来的java.lang.Integer,而直接返回已加载过的Integer.class,这样便可以防止核心API库被随意篡改。

类加载图

在这里插入图片描述

方法区
1
引用地址
基本数据类型
clas文件

OOM错误( OutOfMemoryError )
在这里插入图片描述

  • -Xms8m 设置初始化内存分配大小/164
  • -Xmx8m 设置最大分配内存,默认1/4
  • -XX:+HeapDumpOnOutOfMemoryError 在文件中生成 .hprof文件
  • -XX:+PrintGCDetails 在控制台打印输出
GC垃圾回收

jvm在进行GC

  • 新生代
  • 幸存区(里面有两个 :form,to)
  • 老年区()
GC两种回收机制:轻GC(普通)、重GC(全局GC)

GC题目:

  • JVM的内存模型和分区~详细到每个区放什么?
  • 堆里面的分区有哪些? Eden, form, to, 老年区,说说他们的特点?
    • 轻GC(普通)、重GC(全局GC)分别在什么时候发生什么时候?

GC的算法有哪些?标记清除法,标记整理,复制算法,引用计数器法
1、标记清除法在这里插入图片描述
2、复制算法
在这里插入图片描述
在这里插入图片描述

Xmx:最大堆内存,如:-Xmx512m

-Xms:初始时堆内存,如:-Xms256m

-XX:MaxNewSize:最大年轻区内存

-XX:NewSize:初始时年轻区内存.通常为 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90%

-XX:MaxPermSize:最大持久带内存

-XX:PermSize:初始时持久带内存

-XX:+PrintGCDetails。打印 GC 信息

 -XX:NewRatio 新生代与老年代的比例,如 –XX:NewRatio=2,则新生代占整个堆空间的1/3,老年代占2/3

 -XX:SurvivorRatio 新生代中 Eden 与 Survivor 的比值。默认值为 8。即 Eden 占新生代空间的 8/10,另外两个 Survivor 各占 1/10
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cookie3_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值