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

【学习笔记】深入理解Java虚拟机学习笔记——第5章 调优案例分析与实战

第5章 调优案例分析与实战

5.1 概述

5.2 案例分析

5.2.1 大内存硬件上的程序部署策略

为防止大内存一次Full GC时间过长,可以考虑使用响应速度优先的垃圾回收器,还可以通过将一个10GB堆内存的应用分解为5个2GB堆内存应用,并通过负载均衡来调用,以减小堆内存,加快Full GC速度,加快响应时间

5.2.2 集群间同步导致的内存溢出

分析内存转储快照,以发现占用大量内存的对象以及具体原因。

5.2.3 堆外内存导致的溢出错误

除java方法区和堆内存外,java运行所用内存:P186
NIO会用到大量堆外内存
【如发现OOM异常堆栈中出现unsafe等关键信息,可以尝试将堆内存调小,为直接内存创造更大可用范围,或手动进行FullGC,让JVM顺便对直接内存进行回收】

5.2.4 外部命令导致系统缓慢

java执行shell脚本会创建进程,非常消耗资源,尽量避免,使用其他方式替代,注意观察程序运行问题是自身引起还是被系统其他因素影响

5.2.5 服务器虚拟机进程崩溃

web请求生成大量socket,无法及时返回,超过jvm承受能力后会导致崩溃

5.2.6 不恰当数据结构导致内存占用过大

使用HashMap存储<Long,Long>只有18%空间利用率

5.2.7 由Windows虚拟内存导致的长时间停顿

虚拟机内存会影响程序性能

5.2.8 由安全点导致长时间停顿

【int类型的循环不会让线程进入安全点,需要改为long类型】

5.3 实战:Eclipse运行速度调优

5.3.1 调优前的程序运行状态

5.3.2 升级JDK版本的性能变化及兼容问题

Eclipse有自己的Bug list网站,而我们也要提升自己的解决问题的能力。P196

5.3.3 编译时间和类加载时间的优化

java编译后形成.class字节码,需要解释运行,c/c++编译形成二进制文件,可直接运行,但java即时编译,形成的二进制代码一般更高效

5.3.4 调整内存设置,控制垃圾收集频率

根据机器与应用实际情况调整

5.3.5 选择收集器降低延迟

根据实际情况确定垃圾回收线程数

相关文章:

  • NLP学习路线图(三十二): 模型压缩与优化
  • 从认识AI开始-----变分自编码器:从AE到VAE
  • LangChain工具集成实战:构建智能问答系统完整指南
  • springboot3.x对接AI智谱清言
  • 前端获取接口数据流程
  • 利用coze工作流制作一个自动生成PPT的智能体
  • ORACLE 修改端口号之后无法启动?
  • 安装Openstack
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • 线性规划饮食问题求解:FastAPI作为服务端+libhv作为客户端实现
  • Web应用安全漏洞全解析:从原理到实战防御
  • 词法分析和词性标注 自然语言处理
  • 【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
  • day27-shell编程(自动化)
  • 食养有方:进行性核上性麻痹患者的健康饮食指南
  • Java线程同步技术深度解析与实践
  • 【2025年6月8日】Claude 4 国内使用全攻略
  • LLMs基础学习(八)强化学习专题(1)
  • android binder(四)binder驱动详解2
  • MyBatis中include标签用法详解
  • 湖北响应式网站建设设计/免费学生网页制作成品
  • 忻州宁武网站建设/网站建设优化哪家公司好
  • 网站开发php价格/营销app
  • 做本地网站应该选什么内容/上海专业seo公司
  • 网站开发进阶/搜索引擎是什么
  • 企业手机网站建设市场分析/竞价推广账户竞价托管收费