Herong's Tutorial Notes on JVM
Dr. Herong Yang, Version 3.00, 2007

Garbage Collection

Part:   1  2  3  4  5  6  7  8  9 

(Continued from previous part...)

I got the following output:

Time   Total   Free   Free   Total   Act.   Dead   Over
sec.   Mem.    Mem.   Per.   Obj.    Obj.   Obj.   Head
   0    1984   1727    87%       0      0      0    257 
   0    1984   1593    80%     128    128      0    263 
   1    1984   1464    73%     256    256      0    264 
   1    1984   1334    67%     384    384      0    266 
   2    1984   1204    60%     512    512      0    268 
   2    1984   1074    54%     640    640      0    270 
....                                                 
  15    5256   1265    24%    3840   3840      0    151 
  16    5256   1135    21%    3968   3968      0    153 
  16    5256   1005    19%    4096   4096      0    155 
  17    5256   1003    19%    4096   3968    128    157 
  17    5256   1002    19%    4096   3840    256    158 
....                                                  
  26    5256    588    11%    4480   2432   2048    188 
  26    5256    459     8%    4608   2560   2048    189 
  27    5256    329     6%    4736   2688   2048    191 
  27    5256    199     3%    4864   2816   2048    193 
  28    8128   2998    36%    2944   2944      0   2186
  28    8128   2868    35%    3072   3072      0   2188
  29    8128   2738    33%    3200   3200      0   2190
  29    8128   2608    32%    3328   3328      0   2192
....                                                  
  45    8128    634     7%    5248   3200   2048   2246
  45    8128    504     6%    5376   3328   2048   2248
  46    8128    375     4%    5504   3456   2048   2249
  46    8128    245     3%    5632   3584   2048   2251
  47    8128   2230    27%    3712   3712      0   2186
  47    8128   2100    25%    3840   3840      0   2188
  48    8128   1970    24%    3968   3968      0   2190
  48    8128   1840    22%    4096   4096      0   2192
....
  61    8128    645     7%    5248   3200   2048   2235
  62    8128    515     6%    5376   3328   2048   2237
  62    8128    385     4%    5504   3456   2048   2239
  63    8128    256     3%    5632   3584   2048   2240
  63    8128   2230    27%    3712   3712      0   2186
  64    8128   2100    25%    3840   3840      0   2188
  64    8128   1970    24%    3968   3968      0   2190
  65    8128   1840    22%    4096   4096      0   2192
....                                                  
  77    8128    645     7%    5248   3200   2048   2235
  78    8128    515     6%    5376   3328   2048   2237
  78    8128    385     4%    5504   3456   2048   2239
  79    8128    256     3%    5632   3584   2048   2240
  79    8128   2230    27%    3712   3712      0   2186
  80    8128   2100    25%    3840   3840      0   2188
  80    8128   1970    24%    3968   3968      0   2190
  81    8128   1840    22%    4096   4096      0   2192
....                                                  
  93    8128    645     7%    5248   3200   2048   2235
  94    8128    515     6%    5376   3328   2048   2237
  94    8128    385     4%    5504   3456   2048   2239
  95    8128    256     3%    5632   3584   2048   2240
  95    8128   2230    27%    3712   3712      0   2186
  96    8128   2100    25%    3840   3840      0   2188
  96    8128   1970    24%    3968   3968      0   2190
  97    8128   1840    22%    4096   4096      0   2192
....                                                  
 109    8128    645     7%    5248   3200   2048   2235
 110    8128    515     6%    5376   3328   2048   2237
 110    8128    385     4%    5504   3456   2048   2239
 111    8128    255     3%    5632   3584   2048   2241
 111    8128   2230    27%    3712   3712      0   2186
 112    8128   2100    25%    3840   3840      0   2188
 112    8128   1970    24%    3968   3968      0   2190
 113    8128   1840    22%    4096   4096      0   2192
....

The garbage collection had no problem with the memory requirement changing between 2048KB and 4096KB.

Notice that the free memory right garbage collection is also 27%.

Then I increased the memory requirement again with:

java -Xms2m -Xmx8m GCTest 16 24 > tail_16_24.out

I got the following output:

Time   Total   Free   Free   Total   Act.   Dead   Over
sec.   Mem.    Mem.   Per.   Obj.    Obj.   Obj.   Head
   0    1984   1727    87%       0      0      0   257
   0    1984   1593    80%     128    128      0   263
   1    1984   1464    73%     256    256      0   264
   1    1984   1334    67%     384    384      0   266
....                                             
  10    3124    541    17%    2432   2432      0   151
  10    3124    412    13%    2560   2560      0   152
  11    3124    282     9%    2688   2688      0   154
  11    5256   2303    43%    2816   2816      0   137
  12    5256   2173    41%    2944   2944      0   139
....                                               
  19    5256    356     6%    4736   4736      0   164
  19    5256    226     4%    4864   4864      0   166
  20    8128   2998    36%    4992   4992      0   138
  20    8128   2868    35%    5120   5120      0   140
  21    8128   2866    35%    5120   4992    128   142
  21    8128   2864    35%    5120   4864    256   144
  22    8128   2863    35%    5120   4736    384   145
  22    8128   2861    35%    5120   4608    512   147
  23    8128   2859    35%    5120   4480    640   149
  23    8128   2858    35%    5120   4352    768   150
  24    8128   2856    35%    5120   4224    896   152
  24    8128   2854    35%    5120   4096   1024   154
  25    8128   2852    35%    5120   3968   1152   156
  25    8128   2851    35%    5120   3840   1280   157
  26    8128   2849    35%    5120   3712   1408   159
  26    8128   2847    35%    5120   3584   1536   161
  27    8128   2846    35%    5120   3456   1664   162
  27    8128   2844    34%    5120   3328   1792   164
  28    8128   2842    34%    5120   3200   1920   166
  28    8128   2840    34%    5120   3072   2048   168
  29    8128   2839    34%    5120   2944   2176   169
  29    8128   2837    34%    5120   2816   2304   171
  30    8128   2835    34%    5120   2688   2432   173
  30    8128   2834    34%    5120   2560   2560   174
  31    8128   2832    34%    5120   2432   2688   176
  31    8128   2830    34%    5120   2304   2816   178
  32    8128   2828    34%    5120   2176   2944   180
  32    8128   2827    34%    5120   2048   3072   181
  33    8128   2697    33%    5248   2176   3072   183
  33    8128   2567    31%    5376   2304   3072   185
  34    8128   2437    29%    5504   2432   3072   187
  34    8128   2308    28%    5632   2560   3072   188
  35    8128   2178    26%    5760   2688   3072   190
  35    8128   2048    25%    5888   2816   3072   192
  36    8128   1918    23%    6016   2944   3072   194
  36    8128   1788    21%    6144   3072   3072   196
  37    8128   1659    20%    6272   3200   3072   197
  37    8128   1529    18%    6400   3328   3072   199
  38    8128   1399    17%    6528   3456   3072   201
  38    8128   1269    15%    6656   3584   3072   203
  39    8128   1140    14%    6784   3712   3072   204
  39    8128   1010    12%    6912   3840   3072   206
  40    8128    880    10%    7040   3968   3072   208
  40    8128    750     9%    7168   4096   3072   210
  41    8128    620     7%    7296   4224   3072   212
  41    8128    491     6%    7424   4352   3072   213
  42    8128    361     4%    7552   4480   3072   215
  42    8128    231     2%    7680   4608   3072   217
Exception in thread "main" java.lang.OutOfMemoryError

(Continued on next part...)

Part:   1  2  3  4  5  6  7  8  9 

Dr. Herong Yang, updated in 2007
Herong's Tutorial Notes on JVM - Garbage Collection