看到如下的GC信息,
<af type="tenured" id="1410" timestamp="Dec 01 10:57:04 2010"
intervalms="111.788">
<minimum requested_bytes="60088" />
<time exclusiveaccessms="0.094" />
<tenured freebytes="262771784" totalbytes="805306368" percent="32" >
<soa freebytes="113472560" totalbytes="555661824" percent="20" />
<loa freebytes="149299224" totalbytes="249644544" percent="59" />
</tenured>
在请求60088bytes时,触发了GC,尽管soa部分还有110M的空闲
怀疑,WAS 1.5 依旧存在堆碎片
不过有一种解释,还算恰当:
compaction is extremely costly it is avoided for as long as possible.
The behaviour the customer is seeing would point at a fragmented
freelist that would be resolved if compaction were to run. This is a
natural ffragmentation that occurs as you allocate objects of mixed
sizes, the memory manager makes an attempt to allocate objects into free
heap areas best sized to fit them but this is not always possible and
once a larger chunk is split is will not be merged unless when the
allocated object is free its neighboring heap areas do not contain live
objects.