From 5a53b1d2aa71b7454e2ad2b43d9cb2c531b29eef Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Sat, 12 Dec 2015 00:03:18 +0800 Subject: [PATCH] add gc operation output for DtTransferInfo in MTC #53 --- ...acerUseDemo_WeakReferenceInsteadOfRefCounter.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/com/alibaba/mtc/demo/distributed_tracer/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.java b/src/test/java/com/alibaba/mtc/demo/distributed_tracer/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.java index 34eda8816..a48356448 100644 --- a/src/test/java/com/alibaba/mtc/demo/distributed_tracer/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.java +++ b/src/test/java/com/alibaba/mtc/demo/distributed_tracer/DistributedTracerUseDemo_WeakReferenceInsteadOfRefCounter.java @@ -54,6 +54,14 @@ public String toString() { ", leafSpanIdInfo=" + leafSpanIdInfo + '}'; } + + // Output GC operation + @Override + protected void finalize() throws Throwable { + System.out.printf("DEBUG: gc DtTransferInfo traceId %s in thread %s: %s\n", + traceId, Thread.currentThread().getName(), this); + super.finalize(); + } } private static MtContextThreadLocal transferInfo = new MtContextThreadLocal(); @@ -78,6 +86,7 @@ public static void main(String[] args) throws Exception { } Thread.sleep(1000); + // help to check GC status System.gc(); Thread.sleep(1000); } @@ -108,6 +117,9 @@ static void rpcInvokeIn() { // DistributedTracer Framework Code //////////////////////////////////////////////// System.out.printf("Finished Rpc call %s with span %s.\n", traceId, leafSpanIdInfo); + + // release context in ThreadLocal, avoid to be hold by thread, GC friendly. + transferInfo.remove(); } static void syncMethod() {