
JVM
文章平均质量分 56
幻想羽化
这个作者很懒,什么都没留下…
展开
-
深入JVM学习------垃圾回收器
深入JVM学习------垃圾回收器这篇文章主要学习一下四种垃圾回收器。分别是串行、吞吐量优先、响应时间优先以及G1(Garbage1).串行单线程堆内存较小,适合个人电脑在执行垃圾回收时会阻塞其它线程,等待垃圾回收后其余线程再运行。吞吐量优先多线程堆内存较大,多核CPU单位时间内,STW的时间最短在执行垃圾回收时可以并行的进行垃圾回收。响应时间优先多线程堆内存较大,多核CPU尽可能让单次STW时间最短初始标记,时间很短,并且只标记根对象。并发标记,标记剩余原创 2021-04-23 19:55:35 · 234 阅读 · 0 评论 -
深入JVM学习------垃圾回收算法
深入JVM学习------垃圾回收算法这次我们主要说四种垃圾回收算法,分别是标记—清除,标记—整理,复制以及分代回收。标记—清楚算法在标记阶段,像图中,collector会从根对象开始遍历,发现被引用的对象就做上标记。在清除阶段,collector会对堆内存从头到尾进行遍历,将没有标记的对象进行回收,释放内存。该方法优点:速度快。该方法缺点:存在大量的零碎内存,当有需要大内存的对象要存储时会导致内存溢出。标记—整理算法在标记阶段,该方法也是会从根对象开始遍历,发现被引用的对象就做上原创 2021-04-23 18:27:22 · 201 阅读 · 0 评论 -
深入JVM学习------四种引用
深入JVM学习------四种引用相信不少人在查看源码时或多或少都听到过强引用,弱引用,软引用这些字眼,那么他们到底有什么区别呢?强引用强引用是使用最普遍的引用。如图中a对象使用强引用引用A1对象,那垃圾回收器绝不会回收A1对象。当内存空间不足时,Java会抛出OutOfMemoryError错误,使程序异常终止,而不是回收具有强引用的对象来解决内存不足的问题软引用如果一个对象只具有软引用,则内存空间充足时,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。但是如果有另一个强原创 2021-04-23 13:19:16 · 182 阅读 · 0 评论 -
ThreadLocal学习(四)
ThreadLocal学习(四)了解了ThreadLocalMap之后,里面出现了一个名词 “弱引用” ,那么为什么要将这个设置为弱引用而不是设置成强引用呢?其实主要是因为内存泄露问题,看下面这张图就知道了:如果是为强引用的话:当ThreadLocalRef不再使用ThreadLocal对象并且CurrentThread依然运行情况下,始终有强引用链CurrentThreadRef—>CurrentThread—>ThreadLocalMap—>Entry—>Thread原创 2021-04-23 12:50:50 · 149 阅读 · 0 评论 -
深入JVM学习------字符串常量池
深入JVM学习------字符串常量池jdk8之后,字符串常量池被移入了堆中,所以字符串常量池在jdk8之后是存在于堆里的,那么字符串常量池又有什么用呢?让我们看一个代码:String s1 = ‘a’;String s2 = ‘b’;String s3 = ‘a’ + ‘b’;String s4 = s1 + s2;String s5 = “ab”;String s6 = s4.intern();System.out.println(s3 == s4);//falseSystem.原创 2021-04-22 21:22:49 · 115 阅读 · 0 评论 -
深入JVM学习------JVM简介
深入JVM学习------JVM简介首先我们先要了解JVM是什么:上图中红色框部分就是JVM,如上图所示,首先Java源代码会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕后,交给JVM执行引擎.在整个程序的执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存.因此,在Java中我们常常说到的内存管理就是针对这段空间进行管理。那么运行时数原创 2021-04-22 20:59:36 · 169 阅读 · 0 评论