![](https://img-blog.csdnimg.cn/20191027184226648.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
巴勒蒙干
这个作者很懒,什么都没留下…
展开
-
dump分析
目录 一 查找java进程id 二 生成堆转储快照 三 分析内存 工具 使用场景 解决问题 使用 预备知识点1:Shallow Size Retained Size Heap Size Allocated 预备知识点2:支配树(Dominator tree) 预备知识点3:Top Consumers 预备知识点4:OQL 根据Leak Suspects快速查看泄露的可疑点 ...原创 2019-02-24 17:38:56 · 1418 阅读 · 0 评论 -
【深入理解Java虚拟机】Java内存模型
首先注意区分JVM内存结构、Java内存模型 前者是jvm为了管理内存,对内存区域的一个划分,分为 线程共享的:堆+元空间 不共享的:本地方法栈+虚拟机栈+程序计数器 参考:https://blog.csdn.net/raichen_wang/article/details/88922034 后者是为多线程通信而设计的模型 Java Memory Model(JMM) 内存模型 概念...原创 2019-07-07 17:42:29 · 221 阅读 · 0 评论 -
何时会出现FullGC
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示: 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...转载 2019-03-28 07:59:48 · 193 阅读 · 0 评论 -
Metaspace
随着 Java8 的到来,我们再也见不到永久代了。但是这并不意味着类的元数据信息也消失了。这些数据被移到了一个与堆不相连的本地内存区域,这个区域就是我们要提到的元空间。 这项改动是很有必要的,因为对永久代进行调优是很困难的。永久代中的元数据可能会随着每一次 Full GC 发生而进行移动。并且为永久代设置空间大小也是很难确定的,因为这其中有很多影响因素,比如类的总数,常量池的大小和方法数量等。 ...原创 2019-03-31 02:38:01 · 520 阅读 · 0 评论 -
JVM调优方法论
新服务参数设置 新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢? 分析: 依据的原则是根据Java Performance里面的推荐公式来进行设置。 具体来讲: Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍 永久代 PermSize...原创 2019-03-31 02:18:52 · 365 阅读 · 0 评论 -
【深入理解Java虚拟机】垃圾收集器
垃圾收集器可以分为三类 新生代:SerialPraNewParallel Scavenge 老年代:Serial OldParallel OldCMS 回收整个Java堆(新生代和老年代):G1 可以实现的排列组合为: 新生代垃圾收集器 1.Serial串行收集器-复制算法 Serial收集器是新生代单线程收集器,优点是简单高效,算是最基本、发展历史最悠久的收集器。它在进行...原创 2019-03-31 01:47:10 · 144 阅读 · 0 评论 -
【深入理解Java虚拟机】垃圾回收算法
目录 对象已死吗 引用 垃圾回收算法 标记-清除 复制算法 标记整理 分代收集算法 垃圾回收算法选择 垃圾回收机制 垃圾回收类型 对象已死吗 引用计数法:无法解决循环 可达性分析:GC Roots作为起点,没有任何引用链相连遍认为不可达 引用 强引用:Object obj = new Object,只要存在就不会回收 软引用:描述还有用但非必须的对象,发生内存溢...原创 2019-03-31 01:23:32 · 656 阅读 · 0 评论 -
【深入理解Java虚拟机】JVM内存结构
注意区分内存模型和内存结构 Linux与JVM内存关系 推荐看的一篇文章:http://www.importnew.com/14486.html JVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVM与Linux内存的关系的基础。 下图给出了硬件、系统、进程三个层面的内存之间的概要关系。 JVM本质就是一个进程,因此其内存模型也有进...原创 2019-03-31 00:49:22 · 319 阅读 · 0 评论 -
GC日志分析
目录 读日志 GC (minor )日志 Full GC 日志 concurrent mode failure promotion failure Allocation Failure Evacuation Failure Humongous Allocation 读日志 GC (minor )日志 Full GC 日志 concurrent mode failur...原创 2019-03-14 14:27:14 · 1104 阅读 · 0 评论 -
【深入理解Java虚拟机】类加载机制
类加载(Class Loading)是一种机制,他描述的是将字节码以文件形式加载到内存再经过连接、初始化后,最终形成可以被虚拟机直接使用的Java类型地过程 类加载的过程 Class Loading 包含了加载(Loading)、连接(Linking)、初始化(Initialization)三大部分,其中Linking又包含了三个部分:校验(Verification)、准备(Preparati...原创 2019-07-14 20:19:29 · 120 阅读 · 0 评论