jvm
文章平均质量分 88
foolishAndStupid
还在学习成长ing,有木有小伙伴一起学习讨论
展开
-
4段代码了解Java虚拟机虚方法和非虚方法的分派
先从2段代码聊起,原创 2017-04-04 19:07:36 · 1867 阅读 · 2 评论 -
jvm源码阅读笔记[2]:你不知道的晋升阈值TenuringThreshold详解
个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk 历史笔记: jvm源码阅读笔记[1]:如何触发一次CMS回收 大家都知道年轻代中经历了多次GC之后仍然没有被回收的对象就会晋升原创 2017-08-26 10:00:52 · 5987 阅读 · 2 评论 -
jvm源码阅读笔记[3]:从内存分配到触发GC的细节
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收原创 2017-09-03 15:33:04 · 2430 阅读 · 1 评论 -
jvm源码阅读笔记[4]:从GC说到vm operation
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收原创 2017-09-03 21:57:55 · 2152 阅读 · 0 评论 -
jvm源码阅读笔记[5]:内存分配失败触发的GC究竟对内存做了什么?
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收原创 2017-09-09 14:46:32 · 2351 阅读 · 0 评论 -
jvm源码阅读笔记[7]-从jstat -gccause命令谈到jvm中都有哪些GC cause
从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨 个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk jvm源码阅读笔记[1]:如何触发一次CMS回收原创 2017-09-24 17:44:32 · 6282 阅读 · 0 评论 -
jvm源码阅读笔记[6]-杂谈JIT中对Exception做的优化
今天同事上线上看日志,发现一堆只打印了”java.lang.NullPointerException”的异常,代码里面确实捕获且调用了输出堆栈信息的方法,日志里面却没有堆栈信息,甚是困惑。另一个同事说他之前遇到过,好像是JIT优化的结果。搜了一下,找到这样一篇文章(http://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-the原创 2017-09-22 23:29:17 · 1294 阅读 · 0 评论 -
Ubuntu下编译hotspot踩坑指南
折腾了2天,终于在ubuntu上编译hotspot成功了,中间踩了好多坑,资料也不好找啊,还是得跟书上和博客上的各种配置保持一致比较好,稍微有点不一样的地方,也许就是个坑! 环境变量配置如下,各个参数的含义网上也都有,就不列举了。export LANG=Cexport ALT_BOOTDIR=/home/lumingfeng/Downloads/jdk1.6.0_45export AL原创 2017-08-13 23:59:16 · 1442 阅读 · 0 评论 -
A Work in Progress
当你执行”java…”,就会创建一些垃圾回收线程。如果你想知道有多少GC线程,你可以使用-XX:+PrintFlagsFinal -version,然后在大量的输出结果里面找到ParallelGCThreads相关的。你会看到类似以下的结果:uintx Para翻译 2017-07-01 02:07:39 · 842 阅读 · 0 评论 -
Our Collectors
前段时间,我在给朋友讲解的时候,在白板上画了下面这个图。他们看起来(也许只是表现得)很喜欢,因此我想再给你们画一次。 每一个蓝色的盒子代表了一种用翻译 2017-06-30 23:50:45 · 465 阅读 · 0 评论 -
学习使用greys排查线上问题
Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行(不重启服务)的情况下轻松完成JVM相关问题排查工作。安装和启动下载greys脚本:curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh启动脚本:./greys.sh pid如何获取pid:ps -ef|grep java 然后从输出中找到你需要的Java进程原创 2017-06-03 01:00:48 · 5577 阅读 · 0 评论 -
揭下ReentrantLock神秘的面纱
结论 先给出结论。综合起来,ReentrantLock是一个独占锁,可重入锁,且有公平锁和非公平锁之分。 公平锁和非公平锁各自是怎么实现的呢?非公平锁中,某一线程调用lock()时就会使用CAS尝试获取锁(不管锁当前是否空闲),获取失败才会加入到队列中等待。而在公平锁中,某一线程调用lock()时,只有在当前锁是空闲时,且等待队列中没有其他线程才会使用CAS去获取,如果等待队列中有其原创 2017-06-17 16:51:53 · 591 阅读 · 0 评论 -
深入了解标记-清扫回收算法
摘自《the garbage collection handbook》 之前对标记-清扫回收算法的理解只是读完《深入理解Java虚拟机》里面的介绍,而对里面的很多细节不甚了解。看了《the garbage collection handbook》才知道里面还大有名堂。标记-清扫是怎么标记的?标记位在哪?标记过程有什么优化方法?清扫过程如何清扫?怎样优化清扫过程?回收器又是怎么和分配对象空间原创 2017-05-20 11:06:36 · 2322 阅读 · 1 评论 -
GC系列:如何优化标记-整理算法
标记-整理算法有一个整理对象,避免产生内存碎片的过程,那么回收器是怎么整理对象的?整理算法又是怎么区分性能好坏的?整理过程大概需要哪几个步骤?原创 2017-05-22 20:51:45 · 4399 阅读 · 2 评论 -
GC系列:如何优化引用计数算法(1)
引言 标记-清除,标记-整理,复制式回收算法都是属于间接式的:先从根集合出发,遍历根集合图,找到存活的对象,再反向确定出死亡的对象。而引用计数算法则可以通过引用关系的创建和删除直接确定对象的存活状态,而不用像追踪式回收器一样。 在引用计数算法中,每个对象都维护了一个引用计数器,该值通常在对象头中。 伪代码简单的引用计数算法New()://创建对象 ref=alloca原创 2017-06-03 17:45:21 · 1333 阅读 · 0 评论 -
jvm源码阅读笔记[1]:如何触发一次CMS回收
个人源码地址:https://github.com/FlashLightNing/openjdk-notes 还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk 对于配置使用CMS回收器的应用,用jstack pid | grep GC 可以发现,有一个名为Concurrent Mark-Sweep GC Thre原创 2017-08-20 18:03:20 · 3741 阅读 · 1 评论