JVM
文章平均质量分 71
这只是个昵称鸭
这个人很懒,还没有添加简介
展开
-
【对线面试官】一张图让你了解jvm
没有什么是一张图搞不定的原创 2022-01-05 18:28:27 · 96 阅读 · 0 评论 -
JVM---类加载和双亲委派模型
类加载和双亲委派模型 1.首先看看什么时候用到了类加载 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpiMAoBx-1622780583410)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210603161207876.png)] 从上图可以看,java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中。其中类装载器的作用其实就是转载 2021-06-04 12:23:14 · 84 阅读 · 0 评论 -
JVM---垃圾回收流程
垃圾回收流程 首先新对象会存放在Eden区, 如果Eden区存不下,将触发一次minor GC,将存活的对象移动到Survior区。 如果Survior区不够的话,会向老年代发送请求,查询老年代的内存是否足够, Survior区要是够的话,将存活区的存活时间比较长的对象存到老年代,然后将Eden区的存活时间比较长的存到存活区,将新创建的分配搭到Eden区。 若空间仍不够,触发一次full GC,重复操作。 若最后空间仍不足,抛OutOfMemoryError异常。 概述 首先新对象会存原创 2021-06-04 12:21:06 · 169 阅读 · 0 评论 -
JVM---垃圾收集器
常见的垃圾收集器 Serial收集器(复制算法): 新生代单线程收集器,标记和清理都是单线程,优点是简单高效; ParNew收集器 (复制算法): 新生代收并行集器,实际上是Serial收集器的多线程版本,在多核CPU环境下有着比Serial更好的表现; Parallel Scavenge收集器 (复制算法): 新生代并行收集器,追求高吞吐量,高效利用 CPU。吞吐量 = 用户线程时间/(用户线程时间+GC线程时间),高吞吐量可以高效率的利用CPU时间,尽快完成程序的运算任务,适合后台应用等对交互相应要求原创 2021-06-04 12:18:32 · 49 阅读 · 0 评论 -
JVM---垃圾回收算法
垃圾回收算法 JVM中常用的垃圾回收算法主要有标记清除算法,复制算法,标记整理算法和分代收集算法。 标记清除算法 首先就是遍历GC Roots将没有关联的对象进行标记,然后将这些标记的对象清除掉。 这个算法的优点是简单,但是效率低,而且清理后的内存会不相连,产生大量的内存碎片。 复制算法 就是将内存分为大小相等的两个部分,让创建的对象在其中的一个上面进行存储,当存储满了或者空间不够,就将空间进行一次垃圾回收,将存活下来的对象放到另一个内存上,把用过的这个清除掉。 优点就是解决了内存碎片的问题,但是代价很大,原创 2021-06-04 12:18:01 · 78 阅读 · 0 评论 -
JVM---jvm对象
1.对象的创建 对象的创建大概可以分为5步,流程如下图所示 1.类加载检查 虚拟机遇到一条new指令时,首先在常量池中定位到这个类的符号引用,然后检查这个符号引用代表的类是否已经被加载过、解析和初始化过,如果没有,那必须先执行相应的类加载过程。 2.分配内存 就是在类加载完成之后,为对象分配实际的内存,对象的大小会在类加载的时候知道,分配内存就是把一块确定大小的内存从Java堆里分出来。有“指针碰撞”和“空闲列表”两种方式。 内存分配并发问题 在创建对象的时候有一个很重要的问题,就是线程安全,因为在实际原创 2021-06-04 12:16:51 · 203 阅读 · 0 评论 -
JVM---jvm内存分区
jvm内存分区 根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3cu2umI4-1622780137286)(C:\Users\Administrator\AppData\Roaming\Typora\typor转载 2021-06-04 12:16:01 · 58 阅读 · 0 评论