VisualGC stands
for Visual Garbage Collection Monitoring Tool. VisualGC attaches to an
instrumented HotSpot JVM and collects and graphically displays garbage collection,
class loader, and HotSpot compiler performance data.
Installing
VisualGC plugin to jvisualvm
Step 1:
Execute the command
jvisualvm.
Tools
-> Plugins
Go to ‘Available
Plugins’ tab.
Select ‘Visual GC’ and
click on ‘Install’ button.
Click on
Next button.
Accept the
licence agreement and click on Install button.
Once
installation is successful, you can see below window.
Click on
Finish button.
Step 2:
Close VisualVM application.
Step 3:
Run App.java
application.
App.java
import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; public class App { private static class BigObject { int i; int ii; int iii; int iiii; int iiiii; int iiiiii; int iiiiiii; int iiiiiiii; int iiiiiiiii; int iiiiiiiiii; public BigObject() { i = 1; ii = 11; iii = 111; iiii = 1111; iiiii = 11111; iiiiii = 111111; iiiiiii = 1111111; iiiiiiii = 11111111; iiiiiiiii = 111111111; iiiiiiiiii = 1111111111; } } private static void printGarbageCollectorBeansInfo() { System.out.println("---------------------------------------------"); List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans(); for (GarbageCollectorMXBean bean : beans) { System.out.println("Name : " + bean.getName()); System.out.println("Collection Count : " + bean.getCollectionCount()); System.out.println("Collection Time : " + bean.getCollectionTime()); String[] memoryPoolNames = bean.getMemoryPoolNames(); for (String poolName : memoryPoolNames) { System.out.println(poolName); } } System.out.println("---------------------------------------------"); } public static void main(String args[]) throws InterruptedException { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); String jvmName = bean.getName(); long pid = Long.valueOf(jvmName.split("@")[0]); System.out.println("PID = " + pid); int counter = 0; List<BigObject> bigObjs = new ArrayList<> (); while (true) { BigObject obj = new BigObject(); counter++; bigObjs.add(obj); //System.out.println(counter); if (counter % 100000 == 0) { bigObjs = new ArrayList<> (); counter = 0; TimeUnit.SECONDS.sleep(2); printGarbageCollectorBeansInfo(); } } } }
No comments:
Post a Comment