=E  java/lang/Object()V   zombie/core/utils/BufferUtilstrackDirectMemoryZ   cleanupThread/Lzombie/core/utils/BufferUtils$ClearReferences;-zombie/core/utils/BufferUtils$ClearReferences   startjava/nio/ByteBuffer(zombie/core/utils/BufferUtils$BufferInfo   java/nio/Buffercapacity()I " #$removeCollectedLjava/lang/ref/ReferenceQueue; & 'D(Ljava/lang/Class;ILjava/nio/Buffer;Ljava/lang/ref/ReferenceQueue;)V ) *+trackedBuffers(Ljava/util/concurrent/ConcurrentHashMap; -./ 01&java/util/concurrent/ConcurrentHashMapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;3java/nio/FloatBuffer5java/nio/IntBuffer7java/nio/ShortBuffer9java/nio/DoubleBuffer ;<= >?java/lang/Runtime getRuntime()Ljava/lang/Runtime; ;A BC totalMemory()J ;E FC freeMemoryHjava/lang/StringBuilder G -K LMvalues()Ljava/util/Collection; OPQ RSjava/util/Collectioniterator()Ljava/util/Iterator; UVW XYjava/util/IteratorhasNext()Z U[ \]next()Ljava/lang/Object; _ `atypeLjava/lang/Class; c desizeIgExisting buffers: Gi jkappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; -m d Go jp(I)Ljava/lang/StringBuilder;r t(b: v f: x i: z s: | d: ~)Total heap memory held:  G j(J)Ljava/lang/StringBuilder;kb Total direct memory held: kb f: kb i: kb s: kb d: kb)Only heap memory available, if you want to monitor direct memory use BufferUtils.setTrackDirectMemoryEnabled(true) during initialization.  java/lang/SystemoutLjava/io/PrintStream; G toString()Ljava/lang/String;  java/io/PrintStreamprintln(Ljava/lang/String;)V  java/lang/ClassforName%(Ljava/lang/String;)Ljava/lang/Class;  getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;  java/lang/reflect/Method setAccessible(Z)Vjava/lang/NoSuchMethodExceptionjava/lang/SecurityException java/lang/ClassNotFoundException  allocateDirect(I)Ljava/nio/ByteBuffer;  java/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;  order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;  clear()Ljava/nio/ByteBuffer;  onBufferAllocated(Ljava/nio/Buffer;)V   loadedMethods+Ljava/util/concurrent/atomic/AtomicBoolean;  )java/util/concurrent/atomic/AtomicBoolean getAndSet(Z)Zsun.nio.ch.DirectBuffercleaner   loadMethod@(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/reflect/Method;   cleanerMethodLjava/lang/reflect/Method; viewedBuffer  viewedBufferMethod attachment  createByteBuffer  getClass()Ljava/lang/Class;free   freeMethod  YisDirect  loadCleanerMethods  invoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;  destroyDirectBuffer   getName    java/util/logging/Logger getLogger.(Ljava/lang/String;)Ljava/util/logging/Logger;  java/util/logging/LevelSEVERELjava/util/logging/Level;Buffer cannot be destroyed: {0}   log@(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V java/lang/IllegalAccessException "java/lang/IllegalArgumentException"+java/lang/reflect/InvocationTargetException${0}  & 'C(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V)java/lang/ref/ReferenceQueue ( - -  / 0 cleanMethod Signature1Ljava/lang/ref/ReferenceQueue;~Ljava/util/concurrent/ConcurrentHashMap;CodeLineNumberTablesetTrackDirectMemoryEnabled StackMapTableprintCurrentDirectMemory(Ljava/lang/StringBuilder;)V;java/lang/Exception=java/lang/Throwable SourceFileBufferUtils.java NestMembers InnerClassesClearReferences BufferInfo1 #$12*+13 0 4*58 64!5 NO 4^ܲز Y *!Y**!%L(++,W*2#Y2*h*!%L(++,Wv*4#Y4*h*!%L(++,WO*6#Y6*h*!%L(++,W(*8!Y8*h*!%L(++,W5bSU WXZ#\5]>^A_Ha\bechdofghiklmnpqt7$&&&$ 894  @:@:DeB*6* GYIK6666 6 6 6 6 66(JN:TZ:^ba@ b`6 ^2ba@ b`6 i^4ba@ b`6 F^6ba@b`6 #^8ba@b`6 >*fh(lnqhW*shnuhnwhnyh n{h n}hqhW*h!mhW*hmhW*sh lnh lnh lnhlnhlnhqhW#*h!mhW*hqhW *5)xy{|~'-<Knx 2p 7E @ 0GU8"""G 4c*+M,,M5 7T: 4:L+W++5  4]֙YK޸ L+M,N*ç :*?LO?LORUUYU5: %+5:?LOP\7& ):D< 4v**WB*L+/*M, , *L #+% _b _b _b! _b5>   ,3?CM!_)b&c(u*7B:>4h4(Y*!-Y+(Y,.5":;<?#@'A+B/C?@ABC D