Keep track of a Throwable if custom LeakTracker is set
Summary: This makes it easier to track down leaks as we currently only have their class names. There are some limitations if this is creates on a separate thread, but that can be addressed separately. This does require temporarily removing the Flipper integration as the interface changes in a backwards-incompatible manner. This will be restored with the next diff in the stack. Reviewed By: oprisnik Differential Revision: D15760947 fbshipit-source-id: 3a5c48f6244f1afc8b7e00230bd1ae2f197e6cdf
This commit is contained in:
committed by
Facebook Github Bot
parent
f2986f8a2f
commit
fd89d73be5
@@ -13,7 +13,6 @@ import com.facebook.common.internal.Predicate;
|
|||||||
import com.facebook.common.memory.manager.DebugMemoryManager;
|
import com.facebook.common.memory.manager.DebugMemoryManager;
|
||||||
import com.facebook.common.memory.manager.NoOpDebugMemoryManager;
|
import com.facebook.common.memory.manager.NoOpDebugMemoryManager;
|
||||||
import com.facebook.common.references.CloseableReference;
|
import com.facebook.common.references.CloseableReference;
|
||||||
import com.facebook.common.references.SharedReference;
|
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||||
import com.facebook.drawee.backends.pipeline.info.ImageLoadStatus;
|
import com.facebook.drawee.backends.pipeline.info.ImageLoadStatus;
|
||||||
import com.facebook.drawee.backends.pipeline.info.ImageOriginUtils;
|
import com.facebook.drawee.backends.pipeline.info.ImageOriginUtils;
|
||||||
@@ -48,8 +47,7 @@ import javax.annotation.Nullable;
|
|||||||
* Allows Sonar to display the contents of Fresco's caches. This is useful for developers to debug
|
* Allows Sonar to display the contents of Fresco's caches. This is useful for developers to debug
|
||||||
* what images are being held in cache as they navigate through their app.
|
* what images are being held in cache as they navigate through their app.
|
||||||
*/
|
*/
|
||||||
public class FrescoFlipperPlugin extends BufferingFlipperPlugin
|
public class FrescoFlipperPlugin extends BufferingFlipperPlugin implements ImagePerfDataListener {
|
||||||
implements ImagePerfDataListener, CloseableReferenceLeakTracker.Listener {
|
|
||||||
|
|
||||||
private static final String FRESCO_EVENT = "events";
|
private static final String FRESCO_EVENT = "events";
|
||||||
private static final String FRESCO_DEBUGOVERLAY_EVENT = "debug_overlay_event";
|
private static final String FRESCO_DEBUGOVERLAY_EVENT = "debug_overlay_event";
|
||||||
@@ -95,10 +93,6 @@ public class FrescoFlipperPlugin extends BufferingFlipperPlugin
|
|||||||
mMemoryManager = memoryManager;
|
mMemoryManager = memoryManager;
|
||||||
mPerfLogger = perfLogger;
|
mPerfLogger = perfLogger;
|
||||||
mDebugPrefHelper = debugPrefHelper;
|
mDebugPrefHelper = debugPrefHelper;
|
||||||
|
|
||||||
if (closeableReferenceLeakTracker != null) {
|
|
||||||
closeableReferenceLeakTracker.setListener(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FrescoFlipperPlugin() {
|
public FrescoFlipperPlugin() {
|
||||||
@@ -513,13 +507,4 @@ public class FrescoFlipperPlugin extends BufferingFlipperPlugin
|
|||||||
private static void respondError(FlipperResponder responder, String errorReason) {
|
private static void respondError(FlipperResponder responder, String errorReason) {
|
||||||
responder.error(new FlipperObject.Builder().put("reason", errorReason).build());
|
responder.error(new FlipperObject.Builder().put("reason", errorReason).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCloseableReferenceLeak(SharedReference<Object> reference) {
|
|
||||||
final FlipperObject.Builder builder =
|
|
||||||
new FlipperObject.Builder()
|
|
||||||
.put("identityHashCode", System.identityHashCode(reference))
|
|
||||||
.put("className", reference.get().getClass().getName());
|
|
||||||
send(FRESCO_CLOSEABLE_REFERENCE_LEAK_EVENT, builder.build());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user