11package xerial .larray .buffer ;
22
33
4- import org .xerial .util .log .Logger ;
5-
64import java .lang .ref .ReferenceQueue ;
75import java .util .Map ;
86import java .util .concurrent .ConcurrentHashMap ;
97import java .util .concurrent .atomic .AtomicLong ;
10-
8+ import java .util .logging .Level ;
9+ import java .util .logging .Logger ;
1110
1211
1312/**
1716 */
1817public class DefaultMemoryAllocator implements MemoryAllocator {
1918
20- private static Logger logger = Logger .getLogger (DefaultMemoryAllocator .class );
19+ private static Logger logger = Logger .getLogger (DefaultMemoryAllocator .class . getName () );
2120
2221 // Table from address -> MemoryReference
2322 private Map <Long , MemoryReference > allocatedMemoryReferences = new ConcurrentHashMap <Long , MemoryReference >();
2423 private ReferenceQueue <Memory > queue = new ReferenceQueue <Memory >();
2524
2625 {
27- // Enable ANSI Color
28- logger .enableColor (true );
29-
3026 // Start OffHeapMemory collector that releases the allocated memory when the corresponding Memory object is collected by GC.
3127 Thread collector = new Thread (new Runnable () {
3228 @ Override
3329 public void run () {
3430 while (true ) {
3531 try {
3632 MemoryReference ref = MemoryReference .class .cast (queue .remove ());
37- if (logger .isTraceEnabled ())
38- logger .trace (String .format ("collected by GC. address:%x" , ref .address ));
33+ if (logger .isLoggable (Level .FINER )) {
34+ logger .finer (String .format ("Found GC target at %x" , ref .address ));
35+ }
3936 release (ref );
4037 }
4138 catch (Exception e ) {
@@ -44,8 +41,9 @@ public void run() {
4441 }
4542 }
4643 });
44+ collector .setName ("LArray-GC" );
4745 collector .setDaemon (true );
48- logger .trace ("Start memory collector" );
46+ logger .finer ("Start memory collector" );
4947 collector .start ();
5048 }
5149
@@ -90,8 +88,9 @@ public void register(Memory m) {
9088 public void releaseAll () {
9189 synchronized (this ) {
9290 Object [] refSet = allocatedMemoryReferences .values ().toArray ();
93- if (refSet .length != 0 )
94- logger .trace ("Releasing allocated memory regions" );
91+ if (refSet .length != 0 ) {
92+ logger .finer ("Releasing allocated memory regions" );
93+ }
9594 for (Object ref : refSet ) {
9695 release ((MemoryReference ) ref );
9796 }
@@ -107,8 +106,9 @@ public void release(Memory m) {
107106 synchronized (this ) {
108107 long address = m .headerAddress ();
109108 if (allocatedMemoryReferences .containsKey (address )) {
110- if (logger .isTraceEnabled ())
111- logger .trace (String .format ("Released memory address:%x, size:%,d" , address , m .dataSize ()));
109+ if (logger .isLoggable (Level .FINER )) {
110+ logger .finer (String .format ("Released memory at %x (size:%,d)" , address , m .dataSize ()));
111+ }
112112 totalAllocatedSize .getAndAdd (-m .size ());
113113 allocatedMemoryReferences .remove (address );
114114 m .release ();
0 commit comments