Cynicism Cynicism
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Cynicism

Java后端学习中的IKUN
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 内存结构
  • 垃圾回收
  • JVM调优
    • 1. 性能监控(发现问题)
    • 2. 命令行指令
    • 3. 评价指标
    • 4. 内存泄漏
  • 《JVM》笔记
cynicism
2024-06-03
目录

JVM调优

性能监控 -----》性能分析------》性能调优

# 1. 性能监控(发现问题)

具体问题 监控工具
GC频繁 jstat
CPU占用过高 jstat
OOM jmap
内存泄露 jmap
死锁(线程) jstack
程序响应时间过长(线程) jstack

# 2. 命令行指令

  • jps:查看正在运行的java进程
  • jstat:可以持续监视虚拟机各种运行状态信息,包括类加载、内存、垃圾收集等运行时数据
  • jmap:导出当前时刻的内存映像文件(dump二进制文件)和内存使用情况
  • jstack:生成当前时刻的线程快照(线程正在执行的方法堆栈集合以及执行状态)

可视化工具:Visual VM

# 3. 评价指标

  • 停顿时间

    • 应用程序中指的是提交请求和返回请求的响应之间使用的时间;
    • GC中指的是暂停工作线程的时间
  • 吞吐量

    • 单位时间内完成的工作量
    • GC中指的是运行用户代码的时间占总运行时间的比例

# 4. 内存泄漏

定义

内存中一直存在,但是不再被使用的对象

  1. 静态集合类
public class Test {
    // list即为静态集合类
    static List<String> list = new ArrayList<>();

    public void oomTest(){
        String str = new String("test");
        list.add(str);
    }
}
1
2
3
4
5
6
7
8
9

长生命周期的对象(静态集合类)持有短生命周期的对象(例子中的局部对象)的引用,导致短生命周期的对象无法被回收

  1. 单例模式

与静态集合类的原因相似,如果单例对象持有外部对象的引用,导致外部对象也无法回收

  1. 连接未关闭

各种连接,如数据库连接、网络连接、文件流等,如果没有关闭,就会造成内存泄漏

  1. 变量不合理的作用域

变量定义的作用范围大于其使用范围,例如该变量只在某个方法内被使用,导致变量无法被回收(与对象的生命周期相同),造成内存泄漏

  1. 缓存泄露

把对象引用放入缓存中,容易被遗忘,尽管进行了GC,这些对象无法被回收,导致内存泄漏,解决方案:使用WeakHashMap代表缓存

编辑 (opens new window)
#jvm
上次更新: 2025/05/12, 04:51:03
垃圾回收

← 垃圾回收

最近更新
01
Linux篇
03-30
02
Kafka篇
03-30
03
项目介绍
03-01
更多文章>
Theme by Vdoing | Copyright © 2023-2025 Cynicism | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式