Jvm
Dazzling_Ywq
争做20%的人!
展开
-
jvm双亲委派模型, 你学废了吗?
前言 在说双亲委派模型之前, 我们必须要知道三层类加载器: 启动类加载器, 扩展类加载器, 应用程序类加载器(下面说的仅限于jdk8以及之前版本, 1.9JDK在扩展类加载器这里有些变化) 启动类加载器 这个类加载器主要加载你JDK安装路径下lib文件夹中的jar包, 当然也不是只要把jar包放到这个目录下就会被启动类加载器所加载, jvm只加载它都能识别的类库, 启动类加载器是由C++实现的 扩展类加载器 这个类加载器主要加载你JDK安装路径下lib\ext文件夹中的jar包, 扩折类加载器是有java原创 2020-07-20 10:56:44 · 292 阅读 · 3 评论 -
jvm 类加载的过程, 你学废了吗?
前言 我们在编写完成java代码时, 会把java文件编译成class文件, 然后jvm才能执行, 可是jvm是怎么执行这个过程的呢, 如果你还不清楚是怎样的一个加载过程, 相信你看完这篇博客就学废了。 类加载过程 类加载过程大概分为5个阶段: 加载, 验证, 准备, 解析, 初始化 加载阶段 这个加载完成了三件事 通过类的全限定类名获取类的二进制流 将字节流中的静态存储结构转化为方法区的运行时数据结构, 就是把一个静态的变量、类信息等存储起来 生成一个java.lang.Class对象, 作为这个类原创 2020-07-13 12:02:30 · 257 阅读 · 2 评论 -
jvm垃圾收集器你学废了吗(四)
前言 前面三篇文章讲了8种垃圾收集器分别是Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1、Shenandoah,今天我们来说一下ZGC收集器,ZGC也是一款低延迟收集器,这款收集器也是非常的豪横,下面我们看一下它有什么可豪横的! ...原创 2020-07-06 08:21:06 · 271 阅读 · 1 评论 -
jvm垃圾收集器你学废了吗(三)
前言 第一篇文章说了Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS(传送门)这六种收集器,第二篇文章说了经典的G1收集器(传送门),今天我们还要单独的说一下低延迟收集器Shenandoah,Shenandoah收集器是一款只有OpenJDk才会包含的,这时候问题来了 什么是OpenJDK和OracleJDk呢? OpenJDK是JDK的开放源码版本,在JDK11之后两者几乎一致,这篇文章写得比较清楚OpenJDK和OracleJDK的区原创 2020-07-04 09:07:09 · 229 阅读 · 2 评论 -
jvm垃圾收集器你学废了吗(二)
前言 前面一篇文章讲了6种垃圾收集器分别是Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS(传送门) 今天我们来说一下G1(Garbage First)收集器,为什么把G1收集器单独拿出来说呢?它是垃圾收集器技术发展历史上的里程碑式的成果,下面我们细细道来 G1收集器 G1收集器开创了收集器面向局部手机的设计思路和基于Region的内存布局形式,G1也是遵循分代收集理论的,但是它的内存布局有以下几点变化 G1不再使用固定大小以及固定数原创 2020-07-02 10:20:01 · 350 阅读 · 4 评论 -
jvm垃圾收集器你学废了吗(一)
前言 前面一篇文章讲了垃圾回收的算法(传送门),今天来说一下从古到今一些经典的垃圾收集器,直接进入正题! Serial 收集器 Serial 收集器也算上是一个老古董了,看到这个名字,我们就可以猜到这是一个单线程工作的收集器,采用的是标记-复制算法,这里的单线程不仅说它使用一个处理器或者一条线程,而是它必须暂停其他所有工作的线程,Stop The World 这个世界都暂停了,可想而知,你的电脑说不定在某个时刻就要暂停下来等待垃圾回收,这是多么糟糕的一件事情! 但是它依然是HotSpot虚拟机运行在客户原创 2020-07-01 21:43:09 · 1012 阅读 · 1 评论 -
JVM垃圾回收的常见算法你学废了吗?(引用计数算法 标记清除算法 标记压缩算法 复制算法 分代算法)
JVM ----垃圾回收的常见算法以及各自的优缺点 引用计数算法 标记清除算法 标记压缩算法 复制算法 分代算法原创 2020-04-13 08:09:35 · 614 阅读 · 8 评论 -
JVM运行参数 系统参数 -xx参数 -x参数 你学废了吗?
前言 首先聊一下什么是JVM, 我们为什么要去学习JVM JVM Java虚拟机它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的, 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运...原创 2020-04-08 08:40:55 · 511 阅读 · 7 评论