jvm
文章平均质量分 81
Jamin_Ma
无法拥有认知以外的财富
展开
-
jvm---6、JVM 分析及监控工具
jdk 自带分析及监控工具jps JVM Process Status Tool 显示所有的HotSpot 虚拟机进程jstat JVM Statistics Monitoring Tool 收集HotSpot 虚拟机各方面的运行数据jinfo Configuration Info for Java 显示虚...原创 2018-06-11 12:56:55 · 371 阅读 · 0 评论 -
jvm---4、内存分配及回收策略
内存分配:对象的内存分配就是在堆上分配的(也可以经过JIT 编译后被拆散为标量型并间接地栈上分配) ,对象主要分配在Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB 上分配,少数情况(如对象较大)会直接分配到老年代。具体的到看使用哪一种垃圾收集器组合和内存相关配置。回收过程:如果一个对象不可达,也不会立刻被回收,要先宣告一个对象死亡,至少要通过两次标记:对象进行可达性分析后...原创 2018-06-06 11:37:40 · 226 阅读 · 0 评论 -
jvm---3、GC收集分类及配置参数
Serial 是一个单线程收集器,单线程是指进行GC时,必须要暂停所有的工作线程,直到GC 结束。优点:1、简单高效(对于其它GC收集器单线程相比),2、适用于单个CPU 的环境,不会有线程交互的开销。一般Client 模式下的虚拟机使用的是这个GC收集器。缺点:Stop the world新生代采用“复制算法”,老年代采用“标记--整理算法”控制参数:ParNew就是Seri...原创 2018-06-05 19:08:32 · 290 阅读 · 0 评论 -
jvm---2、GC收集算法
GC收集器算法:1、标记--清除算法2、复制算法3、标记--整理4、分代收集算法写在前面:对象存活算法:GC 收集器对不再使用(死亡)的对象进行内存回收,那么就要判定一个对象是否存活。对象存活算法通过对象可达性分析来判定对象是是否存活的。基本思路是:通过一系列称为“GC Roots”对象作为起点,当一个对象到GC Roots 不可达时,证明对象是不可用的(没有外部对象的引用了,如...原创 2018-06-05 13:50:18 · 214 阅读 · 0 评论 -
jvm---6.3、JVM监控工具 VisualVM
运行时监控 VisualVMVisualVM 是jdk发布的功能最强大的运行监视、故障处理、性能分析工具。不需要被监视的程序基于特殊的Agent运行,因此它对应用程序的实际性能影响很小,可以直接使用在生产环境中。实现功能:显示jvm进程及进程配置,环境信息------jps jinfo监视jvm进程的cpu,gc,堆,方法区及线程的信息----jstat jstackdump及分...原创 2018-06-12 14:11:54 · 359 阅读 · 0 评论 -
jvm---6.2、jstack分析死锁
jstack分析死锁写一个死锁:先写两个锁,LockA, LockB。 在LockA 的opt 方法中调用LockB 方法,在LockB 的opt 方法中调用LockA 的opt 方法/** * A锁 */public class LockA { Lock lock = new ReentrantLock(); public void opt(LockB b...原创 2018-06-11 17:08:06 · 592 阅读 · 0 评论 -
jvm---6.1、dump 文件分析工具 IBM HeapAnalyzer
IBM HeapAnalyzer 工具 官网:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091 官网翻译如下; HeapAnalyzer允许通过启发式搜索引擎查找可能的Java™堆泄漏区...原创 2018-06-11 15:52:30 · 5447 阅读 · 0 评论 -
jvm---1、内存区域划分及配置
JVM的内存区域划分jvm 内存可分为方法区、堆 ---------------------- 线程共享的,也就是说在这里面的变量线程不安全。虚拟机栈、本地方法栈、程序计数器 --- 线程独享直接内存 ----- 图中没有画出,记得UnSafe 有方法好像用的是直接内存, 如果 DirectBufferCache 就是使用的直接内存做缓存的其中堆又分为年轻代,老年代。年经代...原创 2018-06-04 15:38:00 · 306 阅读 · 0 评论 -
jvm---7、Metaspace
jdk1.8 取消了PermGen,取而代之的是Metaspace (元空间)Metaspace使用的是本地内存不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。可以通过以下参数来指定元空间的大小:-XX:MetaspaceSize 初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的...原创 2018-06-11 13:03:09 · 549 阅读 · 0 评论 -
jvm---5、GC 日志及分析
GC 日志及分析实例:Roctetmq jvm 配置JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPer...原创 2018-06-08 15:04:36 · 877 阅读 · 0 评论