解决方案 »

  1.   


    tomcat 的垃圾回收gc日志;
      

  2.   

    把dump文件弄下来分析下, 看内存都被哪些对象占用了。
      

  3.   

    1.ps -ef|grep java  找到java的pid,windows直接看资源管理器的pid
    2.利用java1.6及以上版本的jmap命令,生成内存快照
    $jmap -dump:format=b,file=new.bin pid 
    3.利用1.6以上jdk自带的 jvisualvm工具分析快照,找到比较大的内存,分析原因。
      

  4.   

    PSPermGen: 32559K->32559K(32896K) PermGen区太小了
      

  5.   


    内存溢出时,提示是heap溢出;
      

  6.   


    内存溢出时,提示是heap溢出;
    java.lang.OutOfMemoryError: Java heap space 这个异常时堆小了,调大点比如-Xmx=2g
      

  7.   


    内存溢出时,提示是heap溢出;
    java.lang.OutOfMemoryError: Java heap space 这个异常时堆小了,调大点比如-Xmx=2gcatalina.sh里的配置:
    JAVA_OPTS='-server -Xms2000m -Xmx2000m -Xss256k  -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=/usr/local/apr/lib -XX:+PrintGC
    Details -XX:+PrintGCDateStamps -Xloggc:/home/admin/logs/gc.log'内存溢出现场:
    http://bbs.csdn.net/topics/390893842
    分析gc日志结果:
    http://bbs.csdn.net/topics/390863792
      

  8.   

    老年代容量接近上限,所以不停的回收,但是每次又收不掉什么东西。
    拉个DUMP看下老年代中的东西是否是必须的? 如果不是代码问题,就调大点吧~
      

  9.   


    内存溢出时,提示是heap溢出;
    java.lang.OutOfMemoryError: Java heap space 这个异常时堆小了,调大点比如-Xmx=2gcatalina.sh里的配置:
    JAVA_OPTS='-server -Xms2000m -Xmx2000m -Xss256k  -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=/usr/local/apr/lib -XX:+PrintGC
    Details -XX:+PrintGCDateStamps -Xloggc:/home/admin/logs/gc.log'内存溢出现场:
    http://bbs.csdn.net/topics/390893842
    分析gc日志结果:
    http://bbs.csdn.net/topics/390863792

    从你贴出来的来看,多半有内存泄露了,不过你贴出的信息太少了,分析不了
      

  10.   


    jmap的结果;mysql jdbc的对象是不是有点多? jmap -histo 10669|more num     #instances         #bytes  class name
    ----------------------------------------------
       1:       2842898     1317211320  [C
       2:       3942746      159262032  [B
       3:        130572       84684696  [I
       4:       1743215       55782880  java.lang.String
       5:        655017       26200680  java.util.TreeMap$Entry
       6:        309746       21621048  [[B
       7:       1094056       17504896  java.lang.Integer
       8:        235027       15041728  com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty
       9:        163348       13794056  [Ljava.lang.Object;
      10:        274642       13182816  java.nio.HeapCharBuffer
      11:        273811       13142928  java.nio.HeapByteBuffer
      12:        403245       12903840  java.util.Hashtable$Entry
      13:         43927        6790680  <constMethodKlass>
      14:        188006        6016192  java.util.HashMap$Entry
      15:         43927        5985624  <methodKlass>
      16:        212214        5093136  com.mysql.jdbc.ByteArrayRow
      17:          3571        4506048  <constantPoolKlass>
      18:         60502        3872128  com.mysql.jdbc.ConnectionPropertiesImpl$StringConnectionProperty
      19:         59792        3826688  com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty
      20:         64070        3718080  <symbolKlass>
      21:         20168        3668744  [Ljava.lang.String;
      22:         48867        3518424  com.mysql.jdbc.ConnectionPropertiesImpl$IntegerConnectionProperty
      23:         15260        3419272  [Ljava.util.HashMap$Entry;
      24:          9945        3135984  [Ljava.util.Hashtable$Entry;
      25:          3571        2796000  <instanceKlassKlass>
      26:          3097        2777320  <constantPoolCacheKlass>
      27:          2327        2382848  com.mysql.jdbc.JDBC4Connection
      28:          3341        2245944  <methodDataKlass>
      29:         86925        2086200  com.mysql.jdbc.ByteArrayRow
      30:         42754        2052192  java.util.TreeMap
      31:         82306        1975344  java.util.ArrayList
      32:         12916        1859904  com.mysql.jdbc.Field
      33:         57275        1854944  [Z
      34:         53430        1709760  java.sql.Timestamp
      35:         11910        1429200  css.core.Health
      36:          8637        1381920  com.mysql.jdbc.JDBC4ResultSet
      37:         52285        1254840  java.lang.StringBuilder
      38:         14865        1125928  [S
      39:         11710        1124160  css.core.Health
      40:          4544        1065968  [J
      41:         15392         985088  com.mysql.jdbc.ConnectionPropertiesImpl$StringConnectionProperty
      42:         23281         931240  java.util.LinkedHashMap$Entry
      43:         12432         895104  com.mysql.jdbc.ConnectionPropertiesImpl$IntegerConnectionProperty
      44:         37062         889488  java.lang.StringBuffer
      45:         11710         843120  css.core.CdnServer
      46:          7360         824320  java.util.GregorianCalendar
      47:         11710         749440  css.core.CdnServer
      48:         18564         742560  sun.misc.FloatingDecimal
      49:          3269         732256  com.mysql.jdbc.JDBC4PreparedStatement
      50:          7418         712128  sun.util.calendar.Gregorian$Date
      51:         13649         655152  java.util.HashMap
      52:         39116         625856  java.util.TreeSet
      53:           592         606208  com.mysql.jdbc.JDBC4Connection
      54:          6981         558480  com.mysql.jdbc.ConnectionPropertiesImpl$MemorySizeConnectionProperty
      55:         16289         521248  com.mysql.jdbc.Buffer
      56:         20000         480000  org.apache.tomcat.util.bcel.classfile.ConstantUtf8
      57:          3898         405392  java.lang.Class
      58:         12130         388160  java.lang.StackTraceElement
      59:          4369         384472  java.lang.reflect.Method
      

  11.   

    环境方面之前有遇到过的是64位的x系统用了32位的jdk也会出现内存泄露问题
    如果gc无法正常收集垃圾,排除大作业和物理内存过小的话,就是程序代码的问题,用jvisualvm 查看一下,那个工具能够详细分析内存中出现的问题。