我把eclipse的启动参数改成:
-Xms640m -Xmx640m -Xmn192m -XX:MaxPermSize=256m -verbose:gc -Xloggc:gc.log启动eclipse后,gc log显示虚拟机进行了8次Full GC:7.923: [Full GC 100771K->21576K(635712K), 0.1368938 secs]
10.069: [Full GC 42283K->24985K(635712K), 0.1107913 secs]
14.119: [Full GC 121399K->27401K(635712K), 0.1296433 secs]
16.197: [Full GC 45859K->28636K(635712K), 0.1737228 secs]
18.181: [Full GC 43159K->29710K(635712K), 0.1453436 secs]
23.701: [Full GC 83030K->32346K(635712K), 0.1840519 secs]
31.812: [Full GC 93752K->36642K(635712K), 0.2046097 secs]
40.347: [Full GC 73166K->34925K(635712K), 0.2444477 secs]不太理解这个log的具体含义,但第一条log的意思应该是某个区域在100771K占满的时候触发了Full GC。问题是,我设置的堆区大小都不止 100771K,为什么在这个时候发生Full GC?

解决方案 »

  1.   

    补充一下信息: 2660就是eclipse启动的JVM id
    E:\jdk1.6.0_21>jstat -gc 2660
     S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
    19648.0 19648.0  0.0    0.0   157312.0 111320.9  458752.0   34925.2   47360.0 47195.5      0    0.000   8      1.331    1.331E:\jdk1.6.0_21>jstat -gccapacity 2660
     NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC
    196608.0 196608.0 196608.0 19648.0 19648.0 157312.0   458752.0   458752.0   458752.0   458752.0  12288.0 262144.0  47360.0  47360.0      0     8