您的位置 首页 > 数码极客

「java虚拟机如何调优」java虚拟机调优工具!

jvm大体结构

class 文件 加载-验证-准备-解析-初始化-使用-卸载 一个线程一个栈,一个方法一个栈帧

如何确定垃圾

  • 引用计数
  • 会有循环引用的问题
  • 正向可达
  • 从roots对象计数可以达到的对象

垃圾收集算法

  • 标记清除(缺点:内存碎片化,没有连续的内存)
  • Copying (缺点:浪费内存 一般用在新生代[new])
  • 标记压缩 (比copying慢一点 一般用在老年代[tenured])
  • new
  • 存活对象少
  • 使用copying,占用的内存空间也不大,效率也高
  • old
  • 垃圾少
  • 一般使用mark-compact
  • Serial Collector
  • XX:+UseSerialGC
  • 单线程
  • Parallel Collector
  • 并行量大,不过每次垃圾收集,JVM会停顿
  • CMS Collector
  • 并发分区来完成,停顿时间短
  • G1
  • 不仅停顿短,同事并发大。仅仅是个平衡点
  • 有人说建议Java9用这个

JVM 参数

  • - 标准参数,所有jvm 都应该支持
  • -X 非标,每一个jvm实现都不同
  • -XX 不稳定参数,下一个版本可能会取消

java 对象的分配

不开逃逸分析不会先分配在栈上
  • 栈上分配
  • 线程私有小对象
  • 无逃逸(-XX:+DoEscapeAnalysis开启逃逸分析 默认是开启的)
  • 支持标量替换
  • 无需调整
  • 线程本地分配TLAB(Thread Locla Allacation Buffer)在堆上也是eden区,这样做的目的是有一部分数据可以不加锁
  • 占用eden,默认1%
  • 多线程的时候不用竞争eden就可以申请空间,提高效率
  • 小对象
  • 无需调整
  • 老年代
  • 大对象
  • eden
  • 堆:
  • -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=tm -XX:PrintGCDetails
  • -Xms10M -Xmx10M 直接调大最大,避免中途分析和垃圾回收的计算
  • 栈 +Xss128k
  • 大 线程递归调用可以很深
  • 小 线程并发数量可以特别多

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“java虚拟机如何调优,java虚拟机调优工具,Java虚拟机调优,java虚拟机调优参数,java虚拟机调优宝典”边界阅读