17
17
18
18
package org .apache .spark .unsafe .memory ;
19
19
20
- import java .lang .ref .SoftReference ;
20
+ import java .lang .ref .WeakReference ;
21
21
import java .util .HashMap ;
22
22
import java .util .LinkedList ;
23
23
import java .util .Map ;
@@ -40,8 +40,8 @@ public class ExecutorMemoryManager {
40
40
final boolean inHeap ;
41
41
42
42
@ GuardedBy ("this" )
43
- private final Map <Long , LinkedList <SoftReference <MemoryBlock >>> bufferPoolsBySize =
44
- new HashMap <Long , LinkedList <SoftReference <MemoryBlock >>>();
43
+ private final Map <Long , LinkedList <WeakReference <MemoryBlock >>> bufferPoolsBySize =
44
+ new HashMap <Long , LinkedList <WeakReference <MemoryBlock >>>();
45
45
46
46
private static final int POOLING_THRESHOLD_BYTES = 1024 * 1024 ;
47
47
@@ -73,10 +73,10 @@ private boolean shouldPool(long size) {
73
73
MemoryBlock allocate (long size ) throws OutOfMemoryError {
74
74
if (shouldPool (size )) {
75
75
synchronized (this ) {
76
- final LinkedList <SoftReference <MemoryBlock >> pool = bufferPoolsBySize .get (size );
76
+ final LinkedList <WeakReference <MemoryBlock >> pool = bufferPoolsBySize .get (size );
77
77
if (pool != null ) {
78
78
while (!pool .isEmpty ()) {
79
- final SoftReference <MemoryBlock > blockReference = pool .pop ();
79
+ final WeakReference <MemoryBlock > blockReference = pool .pop ();
80
80
final MemoryBlock memory = blockReference .get ();
81
81
if (memory != null ) {
82
82
assert (memory .size () == size );
@@ -96,12 +96,12 @@ void free(MemoryBlock memory) {
96
96
final long size = memory .size ();
97
97
if (shouldPool (size )) {
98
98
synchronized (this ) {
99
- LinkedList <SoftReference <MemoryBlock >> pool = bufferPoolsBySize .get (size );
99
+ LinkedList <WeakReference <MemoryBlock >> pool = bufferPoolsBySize .get (size );
100
100
if (pool == null ) {
101
- pool = new LinkedList <SoftReference <MemoryBlock >>();
101
+ pool = new LinkedList <WeakReference <MemoryBlock >>();
102
102
bufferPoolsBySize .put (size , pool );
103
103
}
104
- pool .add (new SoftReference <MemoryBlock >(memory ));
104
+ pool .add (new WeakReference <MemoryBlock >(memory ));
105
105
}
106
106
} else {
107
107
allocator .free (memory );
0 commit comments