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

JVM 学习

基础篇

Java 支持跨平台

字节码文件详解

1、 应用场景

版本冲突、系统升级

2、字节码 文件的组成

3、 打开 class字节码文件

4、 基础信息

解决版本不兼容

52-44=8 —>>>JDK8
RandomStringUtils 该字节码文件版本:1.8
运行时环境:JDK6 1.6

5、常量池

6、方法

7、 查看字节码 工具

8、arthas

类加载

1、类的生命周期— 应用场景

2、 加载阶段

3、连接阶段

验证

准备

final 修饰的变量

初始化

类加载器

双亲委派机制

运行时 数据区

1、应用场景

2、pc 程序计数器

3、栈

栈内存 也会溢出,stack over flow

4、堆内存

-Xms4G-Xmx4G

5、方法区

6、直接内存区域

总结:

字符串常量池

垃圾回收

1、引用计数法

2、可达性 分析法

** GC Root 对象**

查看GC Root

3、对象引用

四种引用:强弱软虚

强引用:永远不回收

只有弱引用,没有其他 引用 指向该弱引用对象:GC触发就会回收,不管内存够不够


软引用:GC内存 不足时回收

ThreadLocal为啥是弱引用

** 手动调用 remove() 方法进行回收,防止 内存泄露 ~~~~~**

垃圾回收算法

分代回收

垃圾回收器

Parallel

ParNew +CMS

总结

JDK默认垃圾回收器

垃圾回收器选择

G1

介绍

过程

打开G1 垃圾回收器

G1如何实现可停顿预测

G1应用场景

大内存应用

// 内存密集型应用publicclassCacheServer{// 超过4GB的堆内存privateMap<String,byte[]>cache=newConcurrentHashMap<>();publicvoidinit(){// G1能很好地管理大堆// 增量回收,避免长时间停顿for(inti=0;i<100000;i++){cache.put("key"+i,newbyte[1024*100]);// 100KB each}}}

推荐: 堆内存超过4GB

响应时间敏感应用

// 实时交易系统publicclassTradingSystem{publicResponseprocessTrade(TradeRequestrequest){// 要求99.9%的请求在100ms内响应// G1可以控制GC停顿在几十毫秒内// 保证交易不超时Orderorder=validateAndCreateOrder(request);returnexecuteTrade(order);}}

推荐: Web应用、在线服务、实时系统

动态内存需求场景

// 波动负载的应用publicclassElasticApplication{publicvoidhandleLoad(intrequestCount){// 高峰期:大量对象分配// 低峰期:内存释放// G1能自适应调整各代大小// 高效应对负载变化for(inti=0;i<requestCount;i++){processRequest();}}}

推荐: 负载波动大的应用

要求可预测性的场景

// SLA要求严格的服务publicclassSLAService{// SLA要求:99%请求<200ms, 99.9%请求<500ms// G1配置:-XX:MaxGCPauseMillis=100// 确保GC停顿不超过100ms// 帮助满足SLA要求}

G1优化实践

关键参数调优

# 基础配置-XX:+UseG1GC# 启用G1-Xms8g-Xmx8g# 固定堆大小,避免动态扩展# 停顿时间目标-XX:MaxGCPauseMillis=200# 目标最大停顿200ms(默认200)# Region大小(1-32MB,必须是2的幂)-XX:G1HeapRegionSize=16m# 较大Region适合大对象多的场景# 并发GC触发阈值-XX:InitiatingHeapOccupancyPercent=45# 堆占用45%时启动并发标记# 年轻代大小范围-XX:G1NewSizePercent=5# 新生代最小占比5%-XX:G1MaxNewSizePercent=60# 新生代最大占比60%# Mixed GC相关-XX:G1MixedGCCountTarget=8# Mixed GC回收老年代的目标次数-XX:G1OldCSetRegionThresholdPercent=10# 老年代Region回收比例

监控关键指标

使用GC日志监控G1性能:

# 启用详细GC日志(JDK 8)-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:gc.log# JDK 9+使用新的日志格式-Xlog:gc*:file=gc.log:time,level,tags

调整 内存区域大小

对象在堆上的存储

JIT 即时编译器

ZGC

使用

http://www.jsqmd.com/news/1360560/

相关文章:

  • UE5增强输入系统:Input Mapping Context实现战斗状态切换与优先级冲突解决
  • 2026北京卫生间防水靠谱、经验丰富、信誉好的公司推荐:专业厨卫防水,安心居家(8月防水最新资讯) - 吉林同城获客
  • 安卓虚拟摄像头终极指南:3分钟学会自定义摄像头画面
  • JeecgBoot v3.9.2:AI驱动低代码开发,一句话生成完整业务模块
  • PICO Neo3与Unity XR开发环境配置全攻略:从零到一搭建VR应用
  • C++异常处理进阶:从RAII到异常安全,构建健壮代码的核心机制
  • 咔俄斯板材体系全解析:为什么我们选择这些进口板材? - 设计咖
  • 2026 铜陵房屋漏水渗水修缮选择指南:厨卫、外墙、屋顶、飘窗阳光房渗漏怎么高效处理 - 筑宅安
  • 养生零食哪家性价比高:【衡身堂】认证领军 - 17328623207
  • 轻松学习yocto: 06-BusyBox recipe 执行
  • 尼康Z30深度解析:入门微单选购、实战操作与进阶技巧全攻略
  • 2026天津卫生间防水靠谱、经验丰富、信誉好的公司推荐:专业卫生间防水,安心居家(8月防水最新资讯) - 吉林同城获客
  • AI赋能系统运维:智能解决VC++运行库安装难题
  • 2026佛山卫生间防水靠谱、经验丰富、信誉好的公司推荐:专业厨卫楼顶外墙防水,居家干爽无忧(8月防水最新资讯) - 吉林同城获客
  • 3步掌握Montserrat字体:免费下载与专业排版完全指南
  • 2026合肥五年一贯制,首选老牌公办免学费院校!毕业好就业! - 小张zc
  • ANSYS Maxwell瞬态场仿真:平面变压器新激励方式与损耗精确计算
  • XCOM 2模组管理器终极指南:如何用AML启动器告别模组冲突烦恼
  • Unreal引擎网格处理工具:集成libigl与GeometryProcessing实现自动化减面与修复
  • C++游戏引擎实战:从《璀璨宝石》桌游到模块化架构设计
  • 申请悉尼科技大学(UTS)时,哪些中介服务值得考虑?第三方问答型场景拆解与反例 - GrowthUME
  • 2026珠海卫生间防水靠谱、经验丰富、信誉好的公司推荐:专业厨卫防水,安心居家(8月防水最新资讯) - 吉林同城获客
  • 2026 中山业主家装口碑调研:解析轩怡家装受关注背后逻辑 - 天下观知
  • 小户型适合养大型犬吗?从空间、性格到饲养成本全面分析 - 四川同城宠物观察
  • 莱丹WELDY热风枪工业应用与选型指南
  • 3步解锁Beyond Compare 5:开源密钥生成器的逆向工程实践
  • Minecraft正版账号自动化管理:API调用与批量验证技术实践
  • 软银财报背后:从增长主义到现金流管理的战略转型
  • RPG Maker加密资源解密终极指南:开源工具深度解析与实战教程
  • 从炼丹到流水线:自动化实验循环如何重塑AI工程化实践