Java虚拟机
文章平均质量分 68
详细的剖析Java虚拟机内容
下自成蹊*
穷且益坚,不坠青云之志
展开
-
虚拟机类加载机制
概述Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。类加载时机类加载分为三个步骤:加载,连接,初始化;如下图 , 是一个类从加载到使用及卸载的全部生命周期,图片来自参考资料;加载,验证,准备,初始化和卸载这五个阶段的顺序是确定的,类型的加载必须按照这种顺序按部就班地开始。严格规定有且只有6原创 2022-01-17 23:18:00 · 392 阅读 · 0 评论 -
Java故障处理工具
如何定位系统问题异常堆栈日志(系统日志,虚拟机日志)线程快照堆转储快照jps 命令查看虚拟机进程状况工具,列出正在运行的虚拟机进程jps [options] [ hostid ]options : -q,-m,-l,-v常用命令 jps -l :输出主类的全名。如果进行执行的是JAR包,则输出JAR路径jstat统计虚拟机信息监视工具,用于监视虚拟机各种运行状态信息的命令行工具。jsat [option vmid [interval] [s|ms] [count] ]opt原创 2022-01-16 13:11:08 · 132 阅读 · 0 评论 -
排查线程wait的问题
jps -l => 获取对应的 pidjatsck -l pid 获取对应的线程信息jstack -l 52740 | grep -500 “main” 获取对应的线程堆栈原创 2022-01-11 15:34:17 · 201 阅读 · 0 评论 -
Java垃圾收集器
收集算法是内存回收的方法论,垃圾收集器是内存回收的实践者。《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商,不同版本的虚拟机所包含的垃圾是收集器可能会差别很大。新生代Serial标记-复制算法单线程适用于运行在客户端模式下的虚拟机配合的老年代收集器:CMS,Serial Old(MSC)ParNew多线程版本的 Serial标记-复制算法jdk1.7之前首选新生代收集器配合的老年代收集器:CMS,Serial Old(MSC)使用 -XX:+U原创 2022-01-09 15:21:55 · 316 阅读 · 0 评论 -
各种GC名词解释
Partial GC指目标对象不是完全收集整个Java堆的垃圾收集其中又分为新生代收集(Minor GC / Young GC):指目标只是新生代的垃圾收集老年代收集(Major GC / Old GC):指目标只是老年代的垃圾收集。目前只有CMS 收集器会有单独收集老年代的行为,混合收集(Mixed GC): 指目标收集时整个新生代以及部分老年代的垃圾收集。目前只有G1收集器会有这种行为整堆收集(Full GC)收集整个Java堆和方法区的垃圾收集...原创 2022-01-09 14:59:48 · 446 阅读 · 0 评论 -
JVM参数配置
-server -Xms4g -Xmx4g -Xmn2g堆内存最大和最小一样4g,年轻代内存2g-XX:MetaspaceSize=256m-XX:MaxMetaspaceSize=512m元空间区(Matespace)或永久代(Permanent Generation),类比于是方法区https://blog.csdn.net/wangyili002/article/details/105584663MetaspaceSize表示的并非是元空间的大小,它的含义是:主要控制matesac原创 2022-01-09 12:05:22 · 261 阅读 · 0 评论 -
Java 内存区域
这里写目录标题1:概述2:运行时数据区域3:HotSpot虚拟机4:内存溢出1:概述Java 与C++ 之间有一堵由内存动态和垃圾收集技术所围成的墙,墙外的人想进行,墙里的人想出来。C,C++ 对于开发人员来说,在内存区域他们拥有最高的权利,对于每一个对象的“所有权”,又肩负着每一个对象的生命从开始到结束。对于Java 在虚拟机自动内存管理机制的帮助下,不需要考虑对象的内存管理,但是出现内存泄漏之类的问题,如果不了解虚拟机,修复问题会是一件很艰难的工作2:运行时数据区域3:HotSpot虚拟机原创 2021-12-08 23:52:40 · 566 阅读 · 0 评论