JVM
工作5年,重读JVM,有了更多的理解和体会
码农十七
这个作者很懒,什么都没留下…
展开
-
JVM体系结构
一图胜过千言万语。原创 2024-08-26 15:37:45 · 332 阅读 · 0 评论 -
JVM方法执行过程
● 弹出操作数栈栈顶元素,保存到局部变量表第1个位置(把常量2保存到局部变量表)。● 弹出操作数栈栈顶元素,保存到局部变量表第2个位置(把常量3保存到局部变量表)。● 弹出操作数栈栈顶元素,保存到局部变量表第0个位置(把结果5保存到局部变量表)。● 操作数栈中的前两个int相加,并将结果压入操作数栈栈顶。● 变量表中第1个变量压入操作数栈。● 变量表中第2个变量压入操作数栈。● 常量3压入操作数栈。● 常量2压入操作数栈。原创 2024-08-26 15:40:00 · 157 阅读 · 0 评论 -
堆、栈、方法区交互关系
原创 2024-08-26 15:42:41 · 102 阅读 · 0 评论 -
方法区使用示例
原创 2024-08-26 15:43:39 · 117 阅读 · 0 评论 -
对象实例化
原创 2024-08-26 15:45:22 · 316 阅读 · 0 评论 -
对象的内存布局
原创 2024-08-26 15:48:23 · 80 阅读 · 0 评论 -
对象访问定位方式
原创 2024-08-26 15:49:00 · 84 阅读 · 0 评论 -
字符串常量池
原创 2024-08-26 15:51:00 · 109 阅读 · 0 评论 -
垃圾收集相关算法
原创 2024-08-26 15:51:44 · 95 阅读 · 0 评论 -
垃圾收集相关概念
原创 2024-08-26 15:52:29 · 238 阅读 · 0 评论 -
垃圾收集器
原创 2024-08-26 15:55:00 · 311 阅读 · 0 评论 -
字节码格式
原创 2024-08-26 15:55:30 · 332 阅读 · 0 评论 -
字节码指令
在方法执行期间,执行线程持有了同步锁,其他任何线程都无法再获得同一个锁。如果一个同步方法执行期间抛出了异常,并且在方法内部无法处理此异常,那这个同步方法所持有的锁将在异常抛到同步方法之外时自动释放。在JVM中,任何对象都有一个监视器与之相关联,用来判断对象是否被锁定,当监视器被持有后,对象处于锁定状态,指令monitorenter和monitorexit在执行时,都需要在操作数栈顶压入对象。JVM支持两种同步结构,分别是方法内部一段指令序列的同步和方法级的同步,这两种同步都是使用monitor来支持的。原创 2024-08-26 16:01:12 · 195 阅读 · 0 评论 -
类加载机制
原创 2024-08-26 16:02:18 · 238 阅读 · 0 评论 -
Java类加载器
原创 2024-08-26 16:04:26 · 102 阅读 · 0 评论 -
JVM性能监控与调优
命令行工具jps:查看正在运行的线程jstat:查看JVM统计信息jinfo:实时查看和修改JVM配置参数jmap:导出内存映像文件和内存使用情况jstack:打印JVM中线程快照jstatd:远程主机信息收集JVM监控及诊断工具jdk自带jconsole:JDK自带的可视化监控工具VisualVM:JDK自带的可视化监视工具,位于JDK的bin目录下。它提供了一个可视界面,用于查看JVM上运行的基于Java技术的应用程序的详细信息。JMC:Java Mission Contro原创 2024-08-27 15:41:05 · 185 阅读 · 0 评论 -
通过JProfiler快速分析定位线上OOM问题
XX:+HeapDumpOnOutOfMemoryError -Xmx1000M -Xms1000M不久后就会抛出异常:当前目录会生成一个快照文件:可以看到调用树:原创 2024-08-27 16:39:13 · 417 阅读 · 0 评论 -
Java visualVM OOM内存溢出问题 排查分析
接上一章,这次我们使用java自己提供的visualVM排查问题。原创 2024-08-27 17:21:56 · 234 阅读 · 0 评论