zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Charles手机端抓包--证书
    新浪微盘批量下载
    [3140] Sublime Text 2.x, 3.x 通用注册码、密钥集合
    栈的数组实现
    栈的链表实现
    基数排序
    多项式相乘-数组实现
    最大子序列和问题的四种算法
    链表的实现
    时间同步算法与Simple Ring-based election algorithm算法分析-转载
  • 原文地址:https://www.cnblogs.com/sellsa/p/8931266.html
Copyright © 2011-2022 走看看