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

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

commit 16b4691459b636fde4e28de0243a0ee5195c2617
Author: Chetan Mehrotra <[email protected]>
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@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
"[email protected]" <[email protected]>.

Reply via email to