
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 · 1766 阅读 · 0 评论 -
【深入理解Java虚拟机】Java内存模型
首先注意区分JVM内存结构、Java内存模型前者是jvm为了管理内存,对内存区域的一个划分,分为线程共享的:堆+元空间不共享的:本地方法栈+虚拟机栈+程序计数器参考:https://blog.youkuaiyun.com/raichen_wang/article/details/88922034后者是为多线程通信而设计的模型 Java Memory Model(JMM)内存模型概念...原创 2019-07-07 17:42:29 · 277 阅读 · 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 · 238 阅读 · 0 评论 -
Metaspace
随着 Java8 的到来,我们再也见不到永久代了。但是这并不意味着类的元数据信息也消失了。这些数据被移到了一个与堆不相连的本地内存区域,这个区域就是我们要提到的元空间。这项改动是很有必要的,因为对永久代进行调优是很困难的。永久代中的元数据可能会随着每一次 Full GC 发生而进行移动。并且为永久代设置空间大小也是很难确定的,因为这其中有很多影响因素,比如类的总数,常量池的大小和方法数量等。...原创 2019-03-31 02:38:01 · 603 阅读 · 0 评论 -
JVM调优方法论
新服务参数设置新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析:依据的原则是根据Java Performance里面的推荐公式来进行设置。具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍永久代 PermSize...原创 2019-03-31 02:18:52 · 435 阅读 · 0 评论 -
【深入理解Java虚拟机】垃圾收集器
垃圾收集器可以分为三类新生代:SerialPraNewParallel Scavenge 老年代:Serial OldParallel OldCMS 回收整个Java堆(新生代和老年代):G1可以实现的排列组合为:新生代垃圾收集器1.Serial串行收集器-复制算法Serial收集器是新生代单线程收集器,优点是简单高效,算是最基本、发展历史最悠久的收集器。它在进行...原创 2019-03-31 01:47:10 · 204 阅读 · 0 评论 -
【深入理解Java虚拟机】垃圾回收算法
目录对象已死吗引用垃圾回收算法标记-清除复制算法标记整理分代收集算法垃圾回收算法选择垃圾回收机制垃圾回收类型对象已死吗引用计数法:无法解决循环 可达性分析:GC Roots作为起点,没有任何引用链相连遍认为不可达引用强引用:Object obj = new Object,只要存在就不会回收 软引用:描述还有用但非必须的对象,发生内存溢...原创 2019-03-31 01:23:32 · 886 阅读 · 0 评论 -
【深入理解Java虚拟机】JVM内存结构
注意区分内存模型和内存结构Linux与JVM内存关系推荐看的一篇文章:http://www.importnew.com/14486.htmlJVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVM与Linux内存的关系的基础。下图给出了硬件、系统、进程三个层面的内存之间的概要关系。JVM本质就是一个进程,因此其内存模型也有进...原创 2019-03-31 00:49:22 · 382 阅读 · 0 评论 -
GC日志分析
目录读日志GC (minor )日志Full GC 日志concurrent mode failurepromotion failureAllocation FailureEvacuation FailureHumongous Allocation读日志GC (minor )日志Full GC 日志concurrent mode failur...原创 2019-03-14 14:27:14 · 1400 阅读 · 0 评论 -
【深入理解Java虚拟机】类加载机制
类加载(Class Loading)是一种机制,他描述的是将字节码以文件形式加载到内存再经过连接、初始化后,最终形成可以被虚拟机直接使用的Java类型地过程类加载的过程Class Loading 包含了加载(Loading)、连接(Linking)、初始化(Initialization)三大部分,其中Linking又包含了三个部分:校验(Verification)、准备(Preparati...原创 2019-07-14 20:19:29 · 175 阅读 · 0 评论