当前位置: 首页 > news >正文

jvm 基础知识和jvm 调优

类装载分为以下 5 个步骤:
加载:根据查找路径找到相应的 class 文件然后导入;
检查:检查加载的 class 文件的正确性;
准备:给类中的静态变量分配内存空间;
解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址;

不同虚拟机的运行时数据区可能略微有所不同,但都会遵从 Java 虚拟机规范, Java 虚拟机规范规定的区域分为以下 5 个部分:

程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成;

Java 虚拟机栈(Java Virtual Machine Stacks):用于存储局部变量表、操作数栈、动态链接、方法出口等信息;

本地方法栈(Native Method Stack):与虚拟机栈的作用是一样的,只不过虚拟机栈是服务 Java 方法的,而本地方法栈是为虚拟机调用 Native 方法服务的;

Java 堆(Java Heap):Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;

方法区(Methed Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

初始化:对静态变量和静态代码块执行初始化工作。
新生代回收器:Serial、ParNew、Parallel Scavenge
老年代回收器:Serial Old、Parallel Old、CMS
整堆回收器:G1


CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。

CMS 使用的是标记-清除的算法实现的,所以在 gc 的时候回产生大量的内存碎片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。

java -XX:+PrintFlagsFinal 打印所有gc 参数

-Xms2g:初始化推大小为 2g;
-Xmx2g:堆最大内存为 2g;
-XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4;
-XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2;
–XX:+UseParNewGC:指定使用 ParNew + Serial Old 垃圾回收器组合;
-XX:+UseParallelOldGC:指定使用 ParNew + ParNew Old 垃圾回收器组合;
-XX:+UseConcMarkSweepGC:指定使用 CMS + Serial Old 垃圾回收器组合;
-XX:+PrintGC:开启打印 gc 信息;
-XX:+PrintGCDetails:打印 gc 详细信息。

t调优工具 jstack,jmap, jconsole arthas

jjmap -histo 9952 > ./log.txt

jjmap -histo:live 9952> log.txt

jjmap -heap

jjstack -l 9952

http://www.lryc.cn/news/309061.html

相关文章:

  • USB4之ASM2464PD与ASM2464PDX兼容与运用
  • python笔记_进制
  • 面试数据库篇(mysql)- 05什么是聚簇索引什么是非聚簇索引
  • 如何开好一家汽车美容店,汽车美容保养与装饰教学
  • Taro + node.js 注册 仿照java 中的加盐算法
  • 全量知识系统问题及SmartChat给出的答复 之9 三套工具之4语法解析器 之2
  • 简洁版用户登录系统
  • Android 监听网络状态变化
  • 【LeetCode】一周中的第几天+ 一年中的第几天
  • 深度学习 精选笔记(10)简单案例:房价预测
  • DBGridEh 的排序
  • spring-boot-starter-parent和spring-boot-dependencies介绍
  • 缓存穿透解决方案之布隆过滤器
  • pptx和ppt有什么区别?了解两者之间的微妙差异
  • LabVIEW水下温盐深数据一体化采集与分析
  • 适配器模式 详解 设计模式
  • 探索rsync远程同步和SSH免密登录的奥秘
  • JavaScript new、apply call 方法
  • 助力智能化农田作物除草,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统
  • O(1)转移线性dpLeetCode 2369. 检查数组是否存在有效划分
  • 【力扣hot100】刷题笔记Day17
  • leetcode日记(34)通配符匹配
  • 一张图读懂人工智能
  • 5.37 BCC工具之uflow.py解读
  • R语言简介,R语言开发环境搭建步骤,R基础语法以及注释详解
  • 【Django】执行查询—检索对象
  • Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款
  • 模板方法模式 详解 设计模式
  • Node.js_基础知识(http模块)
  • matlab工具包