jvm
Deegue
这个作者很懒,什么都没留下…
展开
-
使用jmap和MAT分析JVM堆内存
我的一台生产环境机器每次运行几天之后就会莫名其妙的宕机,分析日志之后发现在tomcat刚启动的时候内存占用比较少,但是运行个几天之后内存占用越来越大,通过jmap命令可以查询到一些大对象引用没有被及时GC,这里就要求解决内存泄露的问题。Java的内存泄露多半是因为对象存在无效的引用,对象得不到释放,如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析:1. 用工...转载 2018-10-18 15:01:12 · 514 阅读 · 0 评论 -
初探JVM原理与结构
前言这篇文章是JVM的扫盲篇,通俗易懂,对不清楚ClassLoader、Garbage Collection的可以有个大致的了解。HelloWorld在还是小白阶段的时候,我们都会写一个HelloWorld.java,然后执行javac 获得HelloWorld.classpublic class HelloWorld { public static void main(String...原创 2019-05-05 16:26:30 · 3313 阅读 · 3 评论 -
深入理解ClassLoader工作机制
前言ClassLoader类加载器可以说是Java中必学内容之一,无论是想要去研究Concurrent包、Unsafe,还是深入学习Spark等分布式计算框架,都必须对此有一定的理解。笔者在写之前也只了解了皮毛,想通过这篇文章,结合一些书籍和博客,加深对ClassLoader的理解,并分享一下。什么是class文件?xxx.class想必不陌生,JVM不会理解我们写的Java源文件, 我们必...原创 2019-05-05 20:30:50 · 8439 阅读 · 2 评论 -
深入理解sun.misc.Unsafe原理
前言Unsafe类在JDK源码中被广泛使用,在Spark使用off-heap memory时也会使用到,该类功能很强大,涉及到类加载机制(深入理解ClassLoader工作机制),其实例一般情况是获取不到的,源码中的设计是采用单例模式,不是系统加载初始化就会抛出SecurityException异常。这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率。但是,它是一把双刃剑:正如...原创 2019-05-06 20:01:08 · 34121 阅读 · 17 评论 -
G1日志详解
为什么要看GC日志?因为JVM的GC状态能在很大程度上衡量一个Java应用是否健康,在相同条件下能否持续稳定运行。G1和CMS在日志上会有些许的区别,由于平时用G1为主,这边就不提CMS了。G1日志详解本文参考了RedHat Blog的Collecting and reading G1 garbage collector logs,并结合了现实场景和自己的理解来分析。其中的GC日志例子为线...原创 2019-09-26 20:17:09 · 2554 阅读 · 0 评论