
JVM
文章平均质量分 71
JVM
小鱼儿2020
这个作者很懒,什么都没留下…
展开
-
分析GC日志
文章目录GC分类GC日志分类MinorGCFullGCGC日志结构剖析GC日志分析工具GCEasyGCViewerGC分类针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)部分收集(Partial GC):不是完整收集整个Java堆的垃圾收集。其中又分为:新生代收集(Minor GC / Young GC):只是新生代(Eden / S0, S1)的垃圾收集老年代收集(Major GC / Old翻译 2021-07-28 21:38:37 · 153 阅读 · 0 评论 -
JVM运行时参数
文章目录JVM运行时参数JVM参数选项类型一:标准参数选项类型二:-X参数选项类型三:-XX参数选项添加JVM参数选项常用的JVM参数选项打印设置的XX选项及值堆、栈、方法区等内存大小设置OutOfMemory相关的选项垃圾收集器相关选项怎么选择垃圾回收器?GC日志相关选项其他参数通过Java代码获取JVM参数JVM运行时参数JVM参数选项官网地址:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html类型一:标翻译 2021-07-28 21:31:26 · 273 阅读 · 0 评论 -
JVM监控及诊断工具-GUI篇
文章目录工具概述JDK自带的工具第三方工具JconsoleVisual VM连接方式主要功能生成堆内存快照装入堆内存快照Eclipse MAT获取dump文件分析堆dump 文件histogram指定分组显示功能按照类名排序查看强看引用的信息在直方图中可以比较两个堆文件thread overview通过 `Leak Suspects` 查看大概的线程信息浅堆 和 深堆shallow heap 浅堆retained heap 深堆补充:对象实际大小练习通过MAT查看浅堆和深堆大小支配树在Eclipse MAT翻译 2021-07-28 21:19:10 · 295 阅读 · 0 评论 -
JVM监控及诊断工具-命令行篇
文章目录概述jps:查看正在运行的Java进程实战jstat:查看JVM统计信息jinfo:实时查看和修改JVM配置参数概述体会1:使用数据说明问题,使用知识分析问题,使用工具处理问题。体会2:无监控、不调优!官方源码地址:http://hg.openjdk.java.net/jdk/jdk11/file/1ddf9a99e4ad/src/jdk.jcmd/share/classes/sun/toolsjps:查看正在运行的Java进程jps(Java Process Status):显示翻译 2021-07-25 09:55:05 · 181 阅读 · 0 评论 -
性能监控与调优篇-概述篇
文章目录概述为什么要调优监控的依据性能优化的步骤第1步(发现问题):性能监控第2步(排查问题):性能分析第3步(解决问题):性能调优性能评价/测试指标概述为什么要调优防止出现OOM解决OOM减少Full GC出现的频率监控的依据运行日志异常堆栈GC日志线程快照堆转储快照性能优化的步骤第1步(发现问题):性能监控GC频繁cpu load过高OOM内存泄露死锁程序响应时间较长第2步(排查问题):性能分析打印GC日志,通过GCviewer或者http://g翻译 2021-07-22 09:13:00 · 221 阅读 · 0 评论 -
再谈类的加载器
再谈类的加载器翻译 2021-07-21 21:18:54 · 157 阅读 · 0 评论 -
类的加载过程详解
类的加载过程详解翻译 2021-07-21 21:18:22 · 942 阅读 · 0 评论 -
字节码指令集与解析
文章目录思维导图01概述执行模型字节码与数据类型指令分析02-加载与存储指令复习:再谈操作数栈与局部变量表1-局部变量压栈指令2-常量入栈指令3-出栈入局部变量表指令03-算数指令比较指令的说明04-类型转换指令05-对象的创建与访问指令06-方法调用与返回指令07-操作数栈管理指令08-控制转义指令09-异常处理指令10-同步控制指令思维导图01概述执行模型字节码与数据类型指令分析02-加载与存储指令复习:再谈操作数栈与局部变量表1-局部变量压栈指令举例分析如下:翻译 2021-07-21 21:17:16 · 446 阅读 · 0 评论 -
Class文件结构
文章目录01-魔数:Class文件的标志02-Class文件版本号03-常量池:存放所有常量1-常量池计数器2-常量池表2.1 字面量和符号引用2.2 常量类型和结构04-访问标识05-类索引、父类索引、接口索引集合06-字段表集合1-字段计数器2-字段表07-方法表集合1-方法计数器2-方法表08-属性表集合1-属性计数器2-属性表小结public class ClassDemo { private int num = 1; public int add() { num翻译 2021-07-04 22:44:15 · 225 阅读 · 0 评论 -
虚拟机的基石:Class文件
翻译 2021-07-01 12:00:33 · 104 阅读 · 0 评论 -
通过字节码查看代码细节
/** * @author zh * @date 2021年07月01日 9:52 */public class IntegerTest { public static void main(String[] args) { Integer x = 5; int y = 5; System.out.println(x == y); // true ,会进行拆箱,基本类比较 Integer i1 = 10; Int翻译 2021-07-01 11:40:49 · 233 阅读 · 0 评论 -
垃圾回收器概览
文章目录GC 分类与性能指标不同的垃圾回收器概述Serial 回收器:串行回收器ParNew 回收器: 并行回收器Parallel 回收器:吞吐量优先CMS 回收器:低延迟G1 回收器:区域化分代式垃圾回收器总结GC 日志分析垃圾回收器的新发展GC 分类与性能指标不同的垃圾回收器概述/** * -XX:+PrintCommandLineFlags * * -XX:+UseSerialGC:表明新生代使用Serial GC ,同时老年代使用Serial Old翻译 2021-06-28 22:31:04 · 87 阅读 · 0 评论 -
垃圾回收相关概念
文章目录system.gc() 的理解内存溢出内存泄漏stop the world垃圾回收的并发和并行安全点与安全区域再谈引用:强引用再谈引用:软引用再谈引用:弱引用再谈引用:虚引用再谈引用:终结器引用system.gc() 的理解/** * @author shkstart shkstart@126.com * @create 2020 14:49 */public class SystemGCTest { public static void main(String[] arg翻译 2021-06-02 22:42:22 · 168 阅读 · 0 评论 -
垃圾回收相关算法
文章目录标记阶段:引用计数算法标记阶段:可达性分析算法对象的finalization机制MAT与JProfiler的GC Roots 溯源清除阶段:标记-清除算法清除阶段:复制算法清除阶段:标记-压缩算法小结分代收集算法增量收集算法、分区算法标记阶段:引用计数算法/** * -XX:+PrintGCDetails * 证明:java使用的不是引用计数算法 * @author shkstart * @create 2020 下午 2:38 */public class RefCount翻译 2021-05-23 17:53:09 · 79 阅读 · 0 评论 -
垃圾回收概述
文章目录什么是垃圾为什么需要GC早期垃圾回收Java垃圾回收机制哪些区域需要回收什么是垃圾为什么需要GC早期垃圾回收Java垃圾回收机制哪些区域需要回收翻译 2021-05-22 21:57:15 · 68 阅读 · 0 评论 -
StringTable
String 基本特性openjdk String存储结构文档String内存结构 在 jdk1.8 中用 char 数据存储,在 jdk1.9中用 byte 数据存储/** * 产生10万个长度不超过10的字符串,包含a-z,A-Z * * @author shkstart shkstart@126.com * @create 2020 23:58 */public class GenerateString { public static void main(S翻译 2021-05-17 06:52:37 · 135 阅读 · 0 评论 -
执行引擎
文章目录执行引敬概述Java代码编译和执行过程机器码、指令、汇编语言解释器JIT编译器执行引敬概述执行引擎的工作过程Java代码编译和执行过程机器码、指令、汇编语言解释器JIT编译器...翻译 2021-05-16 15:27:34 · 134 阅读 · 0 评论 -
直接内存
直接内存概述/** * IO NIO (New IO / Non-Blocking IO) * byte[] / char[] Buffer * Stream Channel * * 查看直接内存的占用与释放 * @author shkstart shkstart@126.com * @create 2020 0:22 */public class BufferTest { private stati原创 2021-05-15 17:52:46 · 136 阅读 · 0 评论 -
对象的实例化内存布局与访问定位
对象的实例化对象的内存布局对象的访问定位原创 2021-05-15 16:28:18 · 88 阅读 · 0 评论 -
方法区
文章目录栈、堆、方法区的交互关系方法区的理解设置方法区大小与OOM方法区的内部结构方法区使用举例方法区的演变细节方法区的垃圾回收总结栈、堆、方法区的交互关系运行时数据结果图栈、堆、方法区的交互关系方法区的理解方法区官方文档/** * 测试设置方法区大小参数的默认值 * <p> * jdk7及以前: * -XX:PermSize=100m -XX:MaxPermSize=100m * <p> * jdk8及以后: * -XX:MetaspaceSiz原创 2021-05-14 21:45:01 · 266 阅读 · 1 评论 -
堆
文章目录JVM 学习路线图堆的核心概念内存细分堆空间大小的设置堆OOM年轻代与老年代图解对象分配过程常用调优工具MinorGc和MajorGc和FullGc分代式GC触发条件分代思想JVM 学习路线图堆的核心概念JVM 参数 -Xms10m -Xmx10m下面的容量相加为10M内存细分堆空间大小的设置/** * 1. 设置堆空间大小的参数 * -Xms 用来设置堆空间(年轻代+老年代)的初始内存大小 * -X 是jvm的运行参数 * ms 是mem原创 2021-02-17 16:13:09 · 231 阅读 · 2 评论 -
本地方法接口
文章目录什么是本地方法为什么使用 Native什么是本地方法/** * 本地方法 */public class IHaveNatives { public native void Native1(int x); public native static long Native2(); private native synchronized float Native3(Object o); native void Native4(int[] ary) thr原创 2021-01-10 17:26:29 · 134 阅读 · 0 评论 -
虚拟机栈
文章目录虚拟机栈概念内存中的栈和堆线程中的栈结构和JVM的堆结构栈可能的异常栈的存储单位栈的运行原理栈帧的内部结构(Local variables)局部变量表虚拟机栈概念内存中的栈和堆Java的指令是基于栈的架构,栈是运行时单位,而堆是存储单位,栈解决程序的运行问题,即程序如何执行,或者说如保处理数据。堆解决程序的存储问题,即数据怎么放,放在哪。线程中的栈结构和JVM的堆结构栈可能的异常StackOverFlowError:当固定栈的容量时,线程请求分配的栈容量超过Java虚拟机栈允原创 2021-01-10 16:40:30 · 188 阅读 · 0 评论 -
程序计数器
文章目录PC Registers程序计数器案例PC Registers程序计数器案例原创 2020-12-30 22:31:24 · 181 阅读 · 0 评论 -
运行时数据区
文章目录运行时数据区线程中的栈结构和JVM的堆结构JVM中的Runtime类(运行时环境)运行时数据区线程中的栈结构和JVM的堆结构虚拟机栈Java的指令是基于栈的架构,栈是运行时单位,而堆是存储单位作用: 主管JAVA程序的运行,它保存方法的局部变量,部分结果,并参与方法的调用和返回。JVM对栈的操作只有出栈和压栈。且允许Java栈的大小是动态的或是固定不变的。设置栈大小命令:-Xss栈可能的异常StackOverFlowError:当固定栈的容量时,线程请求分配的栈容量超原创 2020-12-30 22:16:21 · 155 阅读 · 0 评论 -
类加载子系统
文章目录软件简图详细图类加载器与类的加载过程类加载过程案例类加载器的分类双亲委派模型补充软件JVM上篇:①JDK②jprofiler10③gcviewer-1.37-SNAPSHOT.jar④JClassLib_windows.zip⑤jclasslib-data-5.3.2.jar⑥JProfiler v11.0.2 64位 免费特别版(附注册码+安装教程).zip⑦jprofiler-plugin.jar⑧MemoryAnalyzer-1.9.0.20190605-win32.w翻译 2020-12-30 12:49:44 · 246 阅读 · 4 评论 -
jvisualvm.exe监控工具安装插件
插件地址:https://visualvm.github.io/pluginscenters.html如果需要安装插件,先根据JDK版本找到对应的插件下载地址,再把Java VisualVM插件中的设置里的插件中心地址改成对应的下载地址即可。例如:https://visualvm.github.io/archive/uc/8u40/updates.xml.gz去可用插件页面,安装你想要的插件:如 visualgc, 直接点击安装即可。然后记得重启jvisualvm,会发现多了一个visualgc项原创 2020-10-20 13:52:59 · 782 阅读 · 1 评论