• java应用高内存占用


    在java虚拟机中,内存分为三个代:新生代(New), 老生代(Old)永久代(Perm)

    新生代: 新建的对象都存放这里
    老生代:存放从新生代中迁移过来的生命周期较久的对象。新生代和老生代共同组成了堆内存
    永久代:非堆内存组成部分。主要加载的Class类级对象和class本身,method,field等等


    如果出现java.lang.OutOfMemoryError: Java heap space异常,说明堆内存不够
    原因有二:
      (1)Java虚拟机的堆内存设置不够,可以通过参数-Xms、-Xmx来调整。
      (2)代码中创建了大量大对象,并且长时间不能被垃圾收集器收集(存在被引用)。


    出现java.lang.OutOfMemoryError: PermGen space,说明是永久代Perm内存设置不够。
      一般出现这种情况,都是程序启动需要加载大量的第三方jar包
      例如:在一个Tomcat下部署了太多的应用。

    java.lang.OutOfMemoryError: Java heap space异常故障排查,下面是分析排查步骤

    1、通过top命令找出内存占用高的java进程(M键按内存排序)

    2、使用jmap -histo:live [pid] 分析具体的对象数目和占用内存大小,从而定位代码

    注意:使用jmap命令会进行一次fgc

  • 相关阅读:
    pch文件的创建
    常用的Xcode插件下载地址
    内存管理
    学习笔记-static的作用
    IOS 之label的自适应
    OC中的循环引用
    理解事务的4种隔离级别
    Solrcloud集群搭建
    常见前端浏览器兼容问题及解决方案
    Java内存溢出详解及配置
  • 原文地址:https://www.cnblogs.com/sellsa/p/8931266.html
Copyright © 2020-2023  润新知