随笔分类 - jvm学习总结
摘要:1、引用概述 在栈上的reference类型存储的数据代表某块内存地址,称reference为某内存、某对象的引用。实际上引用分为很多种,从强到弱分为:强引用 > 软引用 > 弱引用 > 虚引用。平常我们使用的引用实际上是强引用,各种引用有自己的特点,强引用就是Java中普通的对象,而软引用、弱引用
阅读全文
摘要:1、线上JVM性能调优,包括两种内存泄露情况排查已经JVM参数调优 两种内存泄漏:数据库大数据查询,监控对象(监控超时事件)一直被引用。
阅读全文
摘要:在重新部署你的应用程序到应用服务器(比如tomcat、weblogic等)时,你是否也遇到过 java.lang.OutOfMemoryError:PermGen space error? 是否也曾一边抱怨这个应用服务器,一边重启,然后继续你的工作,同时脑子里还在想着这一定是该服务器的一个BUG。那
阅读全文
摘要:内存分析: 1、通过 ps -aux(或-elf) | grep java(或shua-xiao)获取进程PID 2、通过 jmap -histo <pid> 查看堆内存中存活的对象 按照对象所占内存大小排序,显示了存活对象的实例数、所占内存、类名。 3、进一步通过jmap获取dump文件,也可以设
阅读全文
摘要:1、JVM参数 分为标准参数和非标准参数。标准参数如:-version,-help。非标准参数有-X和-XX,其中-XX使用最多,主要用于JVM调优和Debug。 * Boolean类型,格式:-XX:[+-]<name>,+或-表示启用或禁用name属性。 如:-XX:+UseG1GC 表示启用G
阅读全文
摘要:1、可回收对象(垃圾)的判定 (1)引用计数法 对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任何只针对其引用,它就是垃圾。 弊端:如果AB相互持有引用,会导致永远不能被回收。 (2)可达性分析 通过GC Root的对象,开始向下寻找,看某个对象是否可达 。
阅读全文
摘要:1、虚拟机栈和栈帧 (1)每个线程对应一个虚拟机栈,线程中方法的调用则对应栈中栈帧的入栈和出栈。 栈帧:每个栈帧对应一个被调用的方法,可以理解为一个方法的运行空间。每个栈帧中包括局部变量表(Local Variables)、操作数栈(Operand Stack)、指向运行时常量池的引用(A refe
阅读全文