Java内存占用过高问题分析

  1. 这里我们创建一个springboot项目, 然后随便写一个contoller, 在这个controller中定义一个List集合, 然后再初始化的时候让集合中10万个字符串, 然后部署并启动项目(这里为了贴近实战, 我是在centos中启动的项目)

    Java内存占用过高问题分析_第1张图片

  2. 进入系统, 使用top命令显示系统中的进程信息, 然后点击H(大写), 以内存排序

    Java内存占用过高问题分析_第2张图片

    这时我们看到, Java程序占用了5.5%的内存

    前面VIRT列表示的是java申请了多少内存, RES表示实际使用了多少内存 这里的单位是k

    在这里主要是看一下概率情况, 同时拿到java程序的进程编号

  3. jdk为我们提供了jmap工具, 这个工具可以帮助我们扫描java进行当前的内存情况

    jmap的功能很多, 这里我们主要使用这个工具查看占用内存最多的类型是什么

    # 这里稍微解释一下, | 的作用是拼接多个命令, |后面的命令利用前面的命令的执行结果继续执行
    jmap -histo:live 2249762 | head -20
    

    Java内存占用过高问题分析_第3张图片

    num : 表示行号, #instance

你可能感兴趣的:(Java进阶学习,jvm,java)