Tue, 13 Apr 2010 13:52:10 -0700
6858496: Clear all SoftReferences before an out-of-memory due to GC overhead limit.
Summary: Ensure a full GC that clears SoftReferences before throwing an out-of-memory
Reviewed-by: ysr, jcoomes
1 //
2 // Copyright 2001-2010 Sun Microsystems, Inc. All Rights Reserved.
3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 //
5 // This code is free software; you can redistribute it and/or modify it
6 // under the terms of the GNU General Public License version 2 only, as
7 // published by the Free Software Foundation.
8 //
9 // This code is distributed in the hope that it will be useful, but WITHOUT
10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 // version 2 for more details (a copy is included in the LICENSE file that
13 // accompanied this code).
14 //
15 // You should have received a copy of the GNU General Public License version
16 // 2 along with this work; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 //
19 // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 // CA 95054 USA or visit www.sun.com if you need additional information or
21 // have any questions.
22 //
23 //
25 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
28 adjoiningGenerations.hpp adjoiningVirtualSpaces.hpp
29 adjoiningGenerations.hpp asPSOldGen.hpp
30 adjoiningGenerations.hpp asPSYoungGen.hpp
31 adjoiningGenerations.hpp psPermGen.hpp
33 adjoiningGenerations.cpp adjoiningGenerations.hpp
34 adjoiningGenerations.cpp adjoiningVirtualSpaces.hpp
35 adjoiningGenerations.cpp parallelScavengeHeap.hpp
36 adjoiningGenerations.cpp psPermGen.hpp
38 adjoiningVirtualSpaces.hpp psVirtualspace.hpp
40 adjoiningVirtualSpaces.cpp java.hpp
41 adjoiningVirtualSpaces.cpp adjoiningVirtualSpaces.hpp
43 asPSOldGen.hpp generationCounters.hpp
44 asPSOldGen.hpp mutableSpace.hpp
45 asPSOldGen.hpp objectStartArray.hpp
46 asPSOldGen.hpp psVirtualspace.hpp
47 asPSOldGen.hpp spaceCounters.hpp
48 asPSOldGen.hpp psOldGen.hpp
50 asPSOldGen.cpp psAdaptiveSizePolicy.hpp
51 asPSOldGen.cpp cardTableModRefBS.hpp
52 asPSOldGen.cpp java.hpp
53 asPSOldGen.cpp oop.inline.hpp
54 asPSOldGen.cpp parallelScavengeHeap.hpp
55 asPSOldGen.cpp psMarkSweepDecorator.hpp
56 asPSOldGen.cpp asPSOldGen.hpp
58 asPSYoungGen.hpp generationCounters.hpp
59 asPSYoungGen.hpp mutableSpace.hpp
60 asPSYoungGen.hpp objectStartArray.hpp
61 asPSYoungGen.hpp spaceCounters.hpp
62 asPSYoungGen.hpp psVirtualspace.hpp
63 asPSYoungGen.hpp psYoungGen.hpp
64 asPSYoungGen.hpp spaceDecorator.hpp
66 asPSYoungGen.cpp gcUtil.hpp
67 asPSYoungGen.cpp java.hpp
68 asPSYoungGen.cpp oop.inline.hpp
69 asPSYoungGen.cpp parallelScavengeHeap.hpp
70 asPSYoungGen.cpp psMarkSweepDecorator.hpp
71 asPSYoungGen.cpp psScavenge.hpp
72 asPSYoungGen.cpp asPSYoungGen.hpp
73 asPSYoungGen.cpp psYoungGen.hpp
74 asPSYoungGen.cpp spaceDecorator.hpp
76 cardTableExtension.cpp cardTableExtension.hpp
77 cardTableExtension.cpp gcTaskManager.hpp
78 cardTableExtension.cpp oop.inline.hpp
79 cardTableExtension.cpp oop.psgc.inline.hpp
80 cardTableExtension.cpp parallelScavengeHeap.hpp
81 cardTableExtension.cpp psTasks.hpp
82 cardTableExtension.cpp psYoungGen.hpp
84 cardTableExtension.hpp cardTableModRefBS.hpp
86 gcTaskManager.hpp mutex.hpp
87 gcTaskManager.hpp growableArray.hpp
89 gcTaskManager.cpp allocation.hpp
90 gcTaskManager.cpp allocation.inline.hpp
91 gcTaskManager.cpp gcTaskManager.hpp
92 gcTaskManager.cpp gcTaskThread.hpp
93 gcTaskManager.cpp mutex.hpp
94 gcTaskManager.cpp mutexLocker.hpp
96 gcTaskThread.hpp thread.hpp
98 gcTaskThread.cpp allocation.hpp
99 gcTaskThread.cpp allocation.inline.hpp
100 gcTaskThread.cpp gcTaskManager.hpp
101 gcTaskThread.cpp gcTaskThread.hpp
102 gcTaskThread.cpp handles.hpp
103 gcTaskThread.cpp handles.inline.hpp
104 gcTaskThread.cpp os.hpp
105 gcTaskThread.cpp resourceArea.hpp
106 gcTaskThread.cpp thread.hpp
108 generationSizer.hpp collectorPolicy.hpp
110 objectStartArray.cpp allocation.inline.hpp
111 objectStartArray.cpp cardTableModRefBS.hpp
112 objectStartArray.cpp java.hpp
113 objectStartArray.cpp objectStartArray.hpp
114 objectStartArray.cpp oop.inline.hpp
116 objectStartArray.hpp allocation.hpp
117 objectStartArray.hpp memRegion.hpp
118 objectStartArray.hpp oop.hpp
119 objectStartArray.hpp psVirtualspace.hpp
121 parallelScavengeHeap.cpp adjoiningGenerations.hpp
122 parallelScavengeHeap.cpp adjoiningVirtualSpaces.hpp
123 parallelScavengeHeap.cpp cardTableExtension.hpp
124 parallelScavengeHeap.cpp gcLocker.inline.hpp
125 parallelScavengeHeap.cpp gcTaskManager.hpp
126 parallelScavengeHeap.cpp generationSizer.hpp
127 parallelScavengeHeap.cpp handles.inline.hpp
128 parallelScavengeHeap.cpp java.hpp
129 parallelScavengeHeap.cpp oop.inline.hpp
130 parallelScavengeHeap.cpp parallelScavengeHeap.inline.hpp
131 parallelScavengeHeap.cpp psAdaptiveSizePolicy.hpp
132 parallelScavengeHeap.cpp psMarkSweep.hpp
133 parallelScavengeHeap.cpp psParallelCompact.hpp
134 parallelScavengeHeap.cpp psPromotionManager.hpp
135 parallelScavengeHeap.cpp psScavenge.hpp
136 parallelScavengeHeap.cpp vmThread.hpp
137 parallelScavengeHeap.cpp vmPSOperations.hpp
139 parallelScavengeHeap.inline.hpp parallelScavengeHeap.hpp
140 parallelScavengeHeap.inline.hpp psMarkSweep.hpp
141 parallelScavengeHeap.inline.hpp psParallelCompact.hpp
142 parallelScavengeHeap.inline.hpp psScavenge.hpp
144 parallelScavengeHeap.hpp collectedHeap.inline.hpp
145 parallelScavengeHeap.hpp objectStartArray.hpp
146 parallelScavengeHeap.hpp gcPolicyCounters.hpp
147 parallelScavengeHeap.hpp psGCAdaptivePolicyCounters.hpp
148 parallelScavengeHeap.hpp psOldGen.hpp
149 parallelScavengeHeap.hpp psPermGen.hpp
150 parallelScavengeHeap.hpp psYoungGen.hpp
151 parallelScavengeHeap.hpp ostream.hpp
153 parMarkBitMap.cpp bitMap.inline.hpp
154 parMarkBitMap.cpp oop.inline.hpp
155 parMarkBitMap.cpp os.hpp
156 parMarkBitMap.cpp os_<os_family>.inline.hpp
157 parMarkBitMap.cpp parMarkBitMap.hpp
158 parMarkBitMap.cpp parMarkBitMap.inline.hpp
159 parMarkBitMap.cpp psParallelCompact.hpp
161 parMarkBitMap.hpp bitMap.inline.hpp
162 parMarkBitMap.hpp psVirtualspace.hpp
164 psAdaptiveSizePolicy.cpp collectorPolicy.hpp
165 psAdaptiveSizePolicy.cpp gcPolicyCounters.hpp
166 psAdaptiveSizePolicy.cpp gcCause.hpp
167 psAdaptiveSizePolicy.cpp generationSizer.hpp
168 psAdaptiveSizePolicy.cpp psAdaptiveSizePolicy.hpp
169 psAdaptiveSizePolicy.cpp psGCAdaptivePolicyCounters.hpp
170 psAdaptiveSizePolicy.cpp psScavenge.hpp
171 psAdaptiveSizePolicy.cpp timer.hpp
172 psAdaptiveSizePolicy.cpp top.hpp
174 psAdaptiveSizePolicy.hpp gcCause.hpp
175 psAdaptiveSizePolicy.hpp gcStats.hpp
176 psAdaptiveSizePolicy.hpp gcUtil.hpp
177 psAdaptiveSizePolicy.hpp adaptiveSizePolicy.hpp
179 psCompactionManager.cpp gcTaskManager.hpp
180 psCompactionManager.cpp objArrayKlass.inline.hpp
181 psCompactionManager.cpp objectStartArray.hpp
182 psCompactionManager.cpp oop.hpp
183 psCompactionManager.cpp oop.inline.hpp
184 psCompactionManager.cpp oop.pcgc.inline.hpp
185 psCompactionManager.cpp parallelScavengeHeap.hpp
186 psCompactionManager.cpp parMarkBitMap.hpp
187 psCompactionManager.cpp psParallelCompact.hpp
188 psCompactionManager.cpp psCompactionManager.hpp
189 psCompactionManager.cpp psOldGen.hpp
190 psCompactionManager.cpp systemDictionary.hpp
192 psCompactionManager.hpp allocation.hpp
193 psCompactionManager.hpp taskqueue.hpp
195 psCompactionManager.inline.hpp psCompactionManager.hpp
196 psCompactionManager.inline.hpp psParallelCompact.hpp
198 psGCAdaptivePolicyCounters.hpp gcAdaptivePolicyCounters.hpp
199 psGCAdaptivePolicyCounters.hpp gcPolicyCounters.hpp
200 psGCAdaptivePolicyCounters.hpp psAdaptiveSizePolicy.hpp
202 psGCAdaptivePolicyCounters.cpp arguments.hpp
203 psGCAdaptivePolicyCounters.cpp resourceArea.hpp
204 psGCAdaptivePolicyCounters.cpp psGCAdaptivePolicyCounters.hpp
206 psGenerationCounters.cpp psGenerationCounters.hpp
207 psGenerationCounters.cpp resourceArea.hpp
209 psGenerationCounters.hpp generationCounters.hpp
210 psGenerationCounters.hpp perfData.hpp
211 psGenerationCounters.hpp psVirtualspace.hpp
213 psMarkSweep.cpp psAdaptiveSizePolicy.hpp
214 psMarkSweep.cpp biasedLocking.hpp
215 psMarkSweep.cpp codeCache.hpp
216 psMarkSweep.cpp events.hpp
217 psMarkSweep.cpp fprofiler.hpp
218 psMarkSweep.cpp gcCause.hpp
219 psMarkSweep.cpp gcLocker.inline.hpp
220 psMarkSweep.cpp generationSizer.hpp
221 psMarkSweep.cpp isGCActiveMark.hpp
222 psMarkSweep.cpp oop.inline.hpp
223 psMarkSweep.cpp memoryService.hpp
224 psMarkSweep.cpp management.hpp
225 psMarkSweep.cpp parallelScavengeHeap.hpp
226 psMarkSweep.cpp psMarkSweep.hpp
227 psMarkSweep.cpp psMarkSweepDecorator.hpp
228 psMarkSweep.cpp psOldGen.hpp
229 psMarkSweep.cpp psPermGen.hpp
230 psMarkSweep.cpp psScavenge.hpp
231 psMarkSweep.cpp psYoungGen.hpp
232 psMarkSweep.cpp referencePolicy.hpp
233 psMarkSweep.cpp referenceProcessor.hpp
234 psMarkSweep.cpp safepoint.hpp
235 psMarkSweep.cpp spaceDecorator.hpp
236 psMarkSweep.cpp symbolTable.hpp
237 psMarkSweep.cpp systemDictionary.hpp
238 psMarkSweep.cpp vmThread.hpp
240 psMarkSweep.hpp markSweep.inline.hpp
241 psMarkSweep.hpp collectorCounters.hpp
243 psMarkSweepDecorator.cpp liveRange.hpp
244 psMarkSweepDecorator.cpp markSweep.inline.hpp
245 psMarkSweepDecorator.cpp objectStartArray.hpp
246 psMarkSweepDecorator.cpp oop.inline.hpp
247 psMarkSweepDecorator.cpp parallelScavengeHeap.hpp
248 psMarkSweepDecorator.cpp psMarkSweep.hpp
249 psMarkSweepDecorator.cpp psMarkSweepDecorator.hpp
250 psMarkSweepDecorator.cpp spaceDecorator.hpp
251 psMarkSweepDecorator.cpp systemDictionary.hpp
253 psMarkSweepDecorator.hpp mutableSpace.hpp
255 psParallelCompact.cpp psAdaptiveSizePolicy.hpp
256 psParallelCompact.cpp codeCache.hpp
257 psParallelCompact.cpp events.hpp
258 psParallelCompact.cpp fprofiler.hpp
259 psParallelCompact.cpp gcCause.hpp
260 psParallelCompact.cpp gcLocker.inline.hpp
261 psParallelCompact.cpp gcTaskManager.hpp
262 psParallelCompact.cpp generationSizer.hpp
263 psParallelCompact.cpp isGCActiveMark.hpp
264 psParallelCompact.cpp management.hpp
265 psParallelCompact.cpp memoryService.hpp
266 psParallelCompact.cpp methodDataOop.hpp
267 psParallelCompact.cpp oop.inline.hpp
268 psParallelCompact.cpp oop.pcgc.inline.hpp
269 psParallelCompact.cpp parallelScavengeHeap.inline.hpp
270 psParallelCompact.cpp pcTasks.hpp
271 psParallelCompact.cpp psMarkSweep.hpp
272 psParallelCompact.cpp psMarkSweepDecorator.hpp
273 psParallelCompact.cpp psCompactionManager.hpp
274 psParallelCompact.cpp psPromotionManager.inline.hpp
275 psParallelCompact.cpp psOldGen.hpp
276 psParallelCompact.cpp psParallelCompact.hpp
277 psParallelCompact.cpp psPermGen.hpp
278 psParallelCompact.cpp psScavenge.hpp
279 psParallelCompact.cpp psYoungGen.hpp
280 psParallelCompact.cpp referencePolicy.hpp
281 psParallelCompact.cpp referenceProcessor.hpp
282 psParallelCompact.cpp safepoint.hpp
283 psParallelCompact.cpp symbolTable.hpp
284 psParallelCompact.cpp systemDictionary.hpp
285 psParallelCompact.cpp vmThread.hpp
287 psParallelCompact.hpp collectorCounters.hpp
288 psParallelCompact.hpp markSweep.hpp
289 psParallelCompact.hpp mutableSpace.hpp
290 psParallelCompact.hpp objectStartArray.hpp
291 psParallelCompact.hpp oop.hpp
292 psParallelCompact.hpp parMarkBitMap.hpp
293 psParallelCompact.hpp psCompactionManager.hpp
294 psParallelCompact.hpp sharedHeap.hpp
296 psOldGen.cpp psAdaptiveSizePolicy.hpp
297 psOldGen.cpp cardTableModRefBS.hpp
298 psOldGen.cpp gcLocker.inline.hpp
299 psOldGen.cpp java.hpp
300 psOldGen.cpp oop.inline.hpp
301 psOldGen.cpp parallelScavengeHeap.hpp
302 psOldGen.cpp psMarkSweepDecorator.hpp
303 psOldGen.cpp psOldGen.hpp
304 psOldGen.cpp spaceDecorator.hpp
306 psOldGen.hpp psGenerationCounters.hpp
307 psOldGen.hpp mutableSpace.hpp
308 psOldGen.hpp objectStartArray.hpp
309 psOldGen.hpp psVirtualspace.hpp
310 psOldGen.hpp safepoint.hpp
311 psOldGen.hpp spaceCounters.hpp
313 psPermGen.cpp gcUtil.hpp
314 psPermGen.cpp markOop.inline.hpp
315 psPermGen.cpp markSweep.inline.hpp
316 psPermGen.cpp parallelScavengeHeap.hpp
317 psPermGen.cpp psMarkSweepDecorator.hpp
318 psPermGen.cpp psParallelCompact.hpp
319 psPermGen.cpp psPermGen.hpp
321 psPermGen.hpp psOldGen.hpp
323 psPromotionManager.cpp memRegion.hpp
324 psPromotionManager.cpp mutableSpace.hpp
325 psPromotionManager.cpp oop.inline.hpp
326 psPromotionManager.cpp oop.psgc.inline.hpp
327 psPromotionManager.cpp parallelScavengeHeap.hpp
328 psPromotionManager.cpp psOldGen.hpp
329 psPromotionManager.cpp psPromotionManager.inline.hpp
330 psPromotionManager.cpp psScavenge.inline.hpp
332 psPromotionManager.hpp allocation.hpp
333 psPromotionManager.hpp prefetchQueue.hpp
334 psPromotionManager.hpp psPromotionLAB.hpp
335 psPromotionManager.hpp taskqueue.hpp
337 psPromotionManager.inline.hpp psPromotionManager.hpp
338 psPromotionManager.inline.hpp psScavenge.hpp
340 psPromotionLAB.cpp mutableSpace.hpp
341 psPromotionLAB.cpp oop.inline.hpp
342 psPromotionLAB.cpp parallelScavengeHeap.hpp
343 psPromotionLAB.cpp psPromotionLAB.hpp
345 psPromotionLAB.hpp allocation.hpp
346 psPromotionLAB.hpp objectStartArray.hpp
348 psScavenge.cpp psAdaptiveSizePolicy.hpp
349 psScavenge.cpp biasedLocking.hpp
350 psScavenge.cpp cardTableExtension.hpp
351 psScavenge.cpp collectorPolicy.hpp
352 psScavenge.cpp fprofiler.hpp
353 psScavenge.cpp gcCause.hpp
354 psScavenge.cpp gcLocker.inline.hpp
355 psScavenge.cpp gcTaskManager.hpp
356 psScavenge.cpp generationSizer.hpp
357 psScavenge.cpp handles.inline.hpp
358 psScavenge.cpp isGCActiveMark.hpp
359 psScavenge.cpp oop.inline.hpp
360 psScavenge.cpp oop.psgc.inline.hpp
361 psScavenge.cpp memoryService.hpp
362 psScavenge.cpp parallelScavengeHeap.hpp
363 psScavenge.cpp psMarkSweep.hpp
364 psScavenge.cpp psParallelCompact.hpp
365 psScavenge.cpp psScavenge.inline.hpp
366 psScavenge.cpp psTasks.hpp
367 psScavenge.cpp referencePolicy.hpp
368 psScavenge.cpp referenceProcessor.hpp
369 psScavenge.cpp resourceArea.hpp
370 psScavenge.cpp spaceDecorator.hpp
371 psScavenge.cpp threadCritical.hpp
372 psScavenge.cpp vmThread.hpp
373 psScavenge.cpp vm_operations.hpp
375 psScavenge.hpp allocation.hpp
376 psScavenge.hpp cardTableExtension.hpp
377 psScavenge.hpp collectorCounters.hpp
378 psScavenge.hpp oop.hpp
379 psScavenge.hpp psVirtualspace.hpp
381 psScavenge.inline.hpp cardTableExtension.hpp
382 psScavenge.inline.hpp parallelScavengeHeap.hpp
383 psScavenge.inline.hpp psPromotionManager.hpp
384 psScavenge.inline.hpp psScavenge.hpp
386 pcTasks.cpp codeCache.hpp
387 pcTasks.cpp collectedHeap.hpp
388 pcTasks.cpp fprofiler.hpp
389 pcTasks.cpp jniHandles.hpp
390 pcTasks.cpp jvmtiExport.hpp
391 pcTasks.cpp management.hpp
392 pcTasks.cpp objArrayKlass.inline.hpp
393 pcTasks.cpp psParallelCompact.hpp
394 pcTasks.cpp pcTasks.hpp
395 pcTasks.cpp oop.inline.hpp
396 pcTasks.cpp oop.pcgc.inline.hpp
397 pcTasks.cpp systemDictionary.hpp
398 pcTasks.cpp thread.hpp
399 pcTasks.cpp universe.hpp
400 pcTasks.cpp vmThread.hpp
402 pcTasks.hpp gcTaskManager.hpp
403 pcTasks.hpp psTasks.hpp
405 psTasks.cpp cardTableExtension.hpp
406 psTasks.cpp codeCache.hpp
407 psTasks.cpp fprofiler.hpp
408 psTasks.cpp gcTaskManager.hpp
409 psTasks.cpp iterator.hpp
410 psTasks.cpp management.hpp
411 psTasks.cpp oop.inline.hpp
412 psTasks.cpp oop.psgc.inline.hpp
413 psTasks.cpp psMarkSweep.hpp
414 psTasks.cpp psPromotionManager.hpp
415 psTasks.cpp psPromotionManager.inline.hpp
416 psTasks.cpp psScavenge.hpp
417 psTasks.cpp psTasks.hpp
418 psTasks.cpp systemDictionary.hpp
419 psTasks.cpp taskqueue.hpp
420 psTasks.cpp thread.hpp
421 psTasks.cpp universe.hpp
422 psTasks.cpp vmThread.hpp
424 psTasks.hpp allocation.hpp
425 psTasks.hpp growableArray.hpp
427 psVirtualspace.hpp virtualspace.hpp
429 psVirtualspace.cpp os.hpp
430 psVirtualspace.cpp os_<os_family>.inline.hpp
431 psVirtualspace.cpp psVirtualspace.hpp
432 psVirtualspace.cpp virtualspace.hpp
434 psYoungGen.cpp gcUtil.hpp
435 psYoungGen.cpp java.hpp
436 psYoungGen.cpp oop.inline.hpp
437 psYoungGen.cpp parallelScavengeHeap.hpp
438 psYoungGen.cpp psMarkSweepDecorator.hpp
439 psYoungGen.cpp psScavenge.hpp
440 psYoungGen.cpp psYoungGen.hpp
441 psYoungGen.cpp mutableNUMASpace.hpp
442 psYoungGen.cpp spaceDecorator.hpp
444 psYoungGen.hpp psGenerationCounters.hpp
445 psYoungGen.hpp mutableSpace.hpp
446 psYoungGen.hpp objectStartArray.hpp
447 psYoungGen.hpp spaceCounters.hpp
448 psYoungGen.hpp psVirtualspace.hpp
450 vmPSOperations.cpp dtrace.hpp
451 vmPSOperations.cpp parallelScavengeHeap.inline.hpp
452 vmPSOperations.cpp gcLocker.inline.hpp
453 vmPSOperations.cpp psMarkSweep.hpp
454 vmPSOperations.cpp psScavenge.hpp
455 vmPSOperations.cpp psScavenge.inline.hpp
456 vmPSOperations.cpp vmPSOperations.hpp
458 vmPSOperations.hpp gcCause.hpp
459 vmPSOperations.hpp parallelScavengeHeap.hpp
460 vmPSOperations.hpp vmGCOperations.hpp