|
@@ -44,11 +44,13 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
private final static RuntimeMXBean runtimeMXBean;
|
|
|
private final static MemoryMXBean memoryMXBean;
|
|
|
private final static ThreadMXBean threadMXBean;
|
|
|
+ private final static ClassLoadingMXBean classLoadingMXBean;
|
|
|
|
|
|
static {
|
|
|
runtimeMXBean = ManagementFactory.getRuntimeMXBean();
|
|
|
memoryMXBean = ManagementFactory.getMemoryMXBean();
|
|
|
threadMXBean = ManagementFactory.getThreadMXBean();
|
|
|
+ classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();
|
|
|
}
|
|
|
|
|
|
public static JvmStats jvmStats() {
|
|
@@ -114,6 +116,11 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
// buffer pools are not available
|
|
|
}
|
|
|
|
|
|
+ stats.classes = new Classes();
|
|
|
+ stats.classes.loadedClassCount = classLoadingMXBean.getLoadedClassCount();
|
|
|
+ stats.classes.totalLoadedClassCount = classLoadingMXBean.getTotalLoadedClassCount();
|
|
|
+ stats.classes.unloadedClassCount = classLoadingMXBean.getUnloadedClassCount();
|
|
|
+
|
|
|
return stats;
|
|
|
}
|
|
|
|
|
@@ -123,6 +130,7 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
Threads threads;
|
|
|
GarbageCollectors gc;
|
|
|
List<BufferPool> bufferPools;
|
|
|
+ Classes classes;
|
|
|
|
|
|
private JvmStats() {
|
|
|
}
|
|
@@ -152,6 +160,14 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
return gc;
|
|
|
}
|
|
|
|
|
|
+ public List<BufferPool> getBufferPools() {
|
|
|
+ return bufferPools;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Classes getClasses() {
|
|
|
+ return classes;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
|
|
builder.startObject(Fields.JVM);
|
|
@@ -217,6 +233,14 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
builder.endObject();
|
|
|
}
|
|
|
|
|
|
+ if (classes != null) {
|
|
|
+ builder.startObject(Fields.CLASSES);
|
|
|
+ builder.field(Fields.CURRENT_LOADED_COUNT, classes.getLoadedClassCount());
|
|
|
+ builder.field(Fields.TOTAL_LOADED_COUNT, classes.getTotalLoadedClassCount());
|
|
|
+ builder.field(Fields.TOTAL_UNLOADED_COUNT, classes.getUnloadedClassCount());
|
|
|
+ builder.endObject();
|
|
|
+ }
|
|
|
+
|
|
|
builder.endObject();
|
|
|
return builder;
|
|
|
}
|
|
@@ -265,6 +289,11 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
static final XContentBuilderString NAME = new XContentBuilderString("name");
|
|
|
static final XContentBuilderString TOTAL_CAPACITY = new XContentBuilderString("total_capacity");
|
|
|
static final XContentBuilderString TOTAL_CAPACITY_IN_BYTES = new XContentBuilderString("total_capacity_in_bytes");
|
|
|
+
|
|
|
+ static final XContentBuilderString CLASSES = new XContentBuilderString("classes");
|
|
|
+ static final XContentBuilderString CURRENT_LOADED_COUNT = new XContentBuilderString("current_loaded_count");
|
|
|
+ static final XContentBuilderString TOTAL_LOADED_COUNT = new XContentBuilderString("total_loaded_count");
|
|
|
+ static final XContentBuilderString TOTAL_UNLOADED_COUNT = new XContentBuilderString("total_unloaded_count");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -629,4 +658,46 @@ public class JvmStats implements Streamable, ToXContent {
|
|
|
out.writeLong(used);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static class Classes implements Streamable {
|
|
|
+
|
|
|
+ long loadedClassCount;
|
|
|
+ long totalLoadedClassCount;
|
|
|
+ long unloadedClassCount;
|
|
|
+
|
|
|
+ Classes() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public Classes(long loadedClassCount, long totalLoadedClassCount, long unloadedClassCount) {
|
|
|
+ this.loadedClassCount = loadedClassCount;
|
|
|
+ this.totalLoadedClassCount = totalLoadedClassCount;
|
|
|
+ this.unloadedClassCount = unloadedClassCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public long getLoadedClassCount() {
|
|
|
+ return loadedClassCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public long getTotalLoadedClassCount() {
|
|
|
+ return totalLoadedClassCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public long getUnloadedClassCount() {
|
|
|
+ return unloadedClassCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void readFrom(StreamInput in) throws IOException {
|
|
|
+ loadedClassCount = in.readLong();
|
|
|
+ totalLoadedClassCount = in.readLong();
|
|
|
+ unloadedClassCount = in.readLong();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void writeTo(StreamOutput out) throws IOException {
|
|
|
+ out.writeLong(loadedClassCount);
|
|
|
+ out.writeLong(totalLoadedClassCount);
|
|
|
+ out.writeLong(unloadedClassCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|