jvm性能调优

77 阅读1分钟

1.jvm的概念

  • 程序计数器:每个线程私有的,保存当前代码运行的行号,线程挂起,恢复后的从之前的代码行执行。
  • 字节码执行引擎:修改程序计数器,开启一个后台线程做垃圾回收
  • 栈:局部变量
  • 堆:对象 元空间(方法区):class字节码文件加载到该区域,主要存静态变量和常量,类信息
  • 类装载子系统:装载class文件
  • 本地方法栈:存放本地方法(C++)数据存储

2.堆

  • 年轻代:eden区,survivor区 minor gc,分带年龄到达15就被分配到老年代
  • 老年代:full gc (存放的对象:spring容器的bean,连接池,对象池,静态变量引用的对象)
  • STW(垃圾回收要暂停用户线程)
  • 进入老年代的对象:长期存活的对象,大对象,动态年龄大于15,对象大小超过survivor区的50% 老年代空间分配担保机制
  • gc roots根节点:线程栈的本地变量,静态变量,本地方法栈。通过这些节点开始寻找引用的对象 找到的对象都标记为非垃圾对象,其余未标记的对象是垃圾对象。

3.Arthas

  • thread 线程号 找cpu高的代码
  • jad 类路径 反编译查看线上代码

4.rocketmq 1秒如何处理10w条消息 大概200m的消息对象

  • 大内存32g,minor gc内存大也会慢,使用G1垃圾收集器分区回收