You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:33:42 UTC

[sling-org-apache-sling-extensions-classloader-leak-detector] 03/06: SLING-3359 - Classloader Leak Detector Console Tab

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.extensions.classloader-leak-detector-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-extensions-classloader-leak-detector.git

commit 91059e3ed0d125d1cda9c1a65a2ceb91c4a9519b
Author: Chetan Mehrotra <ch...@apache.org>
AuthorDate: Tue Feb 11 10:57:09 2014 +0000

    SLING-3359 - Classloader Leak Detector Console Tab
    
    Adding a help message incase the JVM is not started with required VM options
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/leak-detector@1567043 13f79535-47bb-0310-9956-ffa450edef68
---
 .../leakdetector/internal/LeakDetector.java        | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/main/java/org/apache/sling/extensions/leakdetector/internal/LeakDetector.java b/src/main/java/org/apache/sling/extensions/leakdetector/internal/LeakDetector.java
index 1cca04c..fc951c7 100644
--- a/src/main/java/org/apache/sling/extensions/leakdetector/internal/LeakDetector.java
+++ b/src/main/java/org/apache/sling/extensions/leakdetector/internal/LeakDetector.java
@@ -1,6 +1,8 @@
 package org.apache.sling.extensions.leakdetector.internal;
 
 import java.io.PrintWriter;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
 import java.lang.ref.PhantomReference;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
@@ -196,6 +198,27 @@ public class LeakDetector implements Runnable, BundleActivator {
                 }
             }
         }
+        pw.println();
+
+        addHelp(pw);
+    }
+
+    private static void addHelp(PrintWriter pw){
+        RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
+        List<String> argList = bean.getInputArguments();
+
+        boolean containsRequiredArgs = argList.contains("-XX:+UseConcMarkSweepGC")
+                && argList.contains("-XX:+CMSClassUnloadingEnabled");
+
+        if(!containsRequiredArgs){
+            pw.println("Required VM Options Missing");
+            pw.println("===========================");
+            pw.println("Leak detector relies on garbage collection of classloaders. By default");
+            pw.println("the classloaders are not garbage collected. To enable garbage collection of");
+            pw.println("classloader start the JVM with following options ");
+            pw.println("");
+            pw.println("    -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled");
+        }
     }
 
     //~---------------------------------------<Data Model>

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.