JVM
文章平均质量分 83
beyond的架构之旅
这个作者很懒,什么都没留下…
展开
-
定位CPU飙升问题点
定位CPU飙升问题点前期准备问题分析使用linux自带命令分析问题使用async-profiler工具分析问题前期准备先准备一个程序来拉高cpu,这里我们准备了一个springboot项目,在主线程中循环打印日志,代码如下。public class BeyondStarterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringAppli原创 2022-02-19 21:19:06 · 1616 阅读 · 0 评论 -
JVM介绍篇四:JVM中类加载机制
虚拟机类加载机制类加载流程加载验证准备解析初始化卸载类加载器的加载顺序双亲委派机制虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、装换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。类加载流程类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶原创 2022-03-30 14:08:58 · 262 阅读 · 0 评论 -
JVM介绍篇一:JVM运行时数据区域看这篇就够了
csdn中看到了很多关于JVM运行时数据区域介绍的,但是并没有看到什么讲解很好的资料所以这里自己写一个记录下,方便日后工作中需要时可以查阅线上OOM问题如何定位运行时数据区域程序计数器Java虚拟机栈本地方法栈java堆方法区运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域各有各的用途,有的区域随着虚拟机的启动而启动,有的依赖用户线程的启动和结束而建立和销毁。主要包括:程序计数器,Java虚拟机栈,本地方法栈,Java堆,方法区程.原创 2022-02-27 15:39:46 · 835 阅读 · 0 评论 -
JVM介绍篇二:垃圾回收器与内存分配策略
csdn中看到了很多关于JVM运行时数据区域介绍的,但是并没有看到什么讲解很好的资料所以这里自己写一个记录下,方便日后工作中需要时可以查阅垃圾回收器与内存分配策略概述对象已死吗?引用计数法可达性分析法再谈引用 (此处需修改)生存还是死亡回收方法区垃圾回收算法标记-清除算法复制算法标记-整理算法分代回收垃圾回收器并发标记扫描CMS收集器并发标记扫描CMS收集器垃圾回收器如何选择内存分配与回收策略对象优先在 Eden 分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保概述.原创 2022-03-22 15:56:22 · 443 阅读 · 0 评论 -
JVM介绍篇三:jvm性能监控及故障处理工具
使用命令jstat -gcutil pid查看 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 100.00 74.51 22.04 91.31 90.01 41 57.346 0 0.000 57.346S0:幸存1区当前使用比例S1:幸存2区当前使用比例E:伊甸园区使用比例O:老年代使用比例M:元数据区使用比例CCS:压缩使用比例原创 2022-02-23 16:49:23 · 2549 阅读 · 0 评论 -
java项目线上出现OOM问题定位看这篇文章就够了
这里我们先建一个springboot项目模拟出OOM问题,具体代码如下。打包部署到服务器上后开始运行。查看日志发现java.lang.OutOfMemoryError: Java heap space这里我们是创建大量对象,对象又是存储在堆中,所以这边OOM的原因后面已经标注了是heap没有空间了。大家对于此类问题的分析,平时可以多看看JVM的数据,了解JVM中运行时数据区域中每一个区域存放哪些内容,这样在定位OOM问题时也可以根据信息更好的确认。这是我们导出内存快照查看。由于jhat 命原创 2022-02-26 20:56:39 · 1804 阅读 · 0 评论 -
ES中JVM调优记录
2021.10.20 16:30ES启动后无法正常访问,查看ES后台日志如下日志分析:age1 -----------对象年龄代为1ParNew Desired survivor size 17432576 bytes ------------期望的survivor大小为17432576new threshold 6(max 6) JVM内部计算出的晋升阈值从日志可以看出,JVM目前是age6时进入老年代,正常情况下,JV默认M是在age为15后进入老年代,导致这个的原因是新生代内存原创 2021-10-21 11:15:31 · 1094 阅读 · 0 评论 -
Java8 JVM内存结构变了,永久代到元空间
在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试者,如果知晓这些变化,又将成为面试中的亮点。如果在网络上搜索JVM内存结构,90%的可能会搜到Java7及以前的内存图,本篇文章将会对JVM内存结构再次细化,深入理解Java8之后的内部变化。现在意识到关注公众号“程序新视界”的好处了吧。在这里可以不断的刷新你的知识和认知。JVM内存结构的细化再来看一下《JV原创 2021-10-14 14:30:06 · 234 阅读 · 0 评论