Skip to content

Commit aad2611

Browse files
committed
move memory logging to util
1 parent 987de62 commit aad2611

File tree

2 files changed

+35
-27
lines changed

2 files changed

+35
-27
lines changed

org-code-javabuilder/lib/src/main/java/org/code/javabuilder/CodeExecutionManager.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import java.io.IOException;
77
import java.io.InputStream;
88
import java.io.PrintStream;
9-
import java.lang.management.ClassLoadingMXBean;
10-
import java.lang.management.ManagementFactory;
11-
import java.lang.management.MemoryPoolMXBean;
129
import java.nio.file.Files;
1310
import java.util.List;
1411
import org.code.javabuilder.util.LambdaUtils;
@@ -37,8 +34,6 @@ public class CodeExecutionManager {
3734
private PrintStream systemOutputStream;
3835
private boolean isInitialized;
3936

40-
private static final boolean LOG_MEMORY_USAGE = false;
41-
4237
static class CodeBuilderRunnableFactory {
4338
public CodeBuilderRunnable createCodeBuilderRunnable(
4439
ProjectFileLoader fileLoader,
@@ -156,7 +151,6 @@ private void onPostExecute() {
156151
LambdaUtils.safelySendMessage(
157152
this.outputAdapter, new StatusMessage(StatusMessageKey.EXITED), false);
158153
JavabuilderContext.getInstance().onExecutionEnded();
159-
this.logMemoryUsage();
160154
try {
161155
// Close custom input/output streams
162156
this.overrideInputStream.close();
@@ -176,25 +170,4 @@ private void onPostExecute() {
176170
this.isInitialized = false;
177171
}
178172
}
179-
180-
private void logMemoryUsage() {
181-
if (LOG_MEMORY_USAGE) {
182-
List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
183-
for (MemoryPoolMXBean memoryPoolMXBean : memoryPoolMXBeans) {
184-
String usageMessage =
185-
String.format(
186-
"Memory pool %s\n\t Usage: %d\n\tPeak Usage %d",
187-
memoryPoolMXBean.getName(),
188-
memoryPoolMXBean.getUsage().getUsed(),
189-
memoryPoolMXBean.getPeakUsage().getUsed());
190-
LoggerUtils.logInfo(usageMessage);
191-
}
192-
ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();
193-
String classLoadingMessage =
194-
String.format(
195-
"Loaded classes: %d, Unloaded classes: %d",
196-
classLoadingMXBean.getLoadedClassCount(), classLoadingMXBean.getUnloadedClassCount());
197-
LoggerUtils.logInfo(classLoadingMessage);
198-
}
199-
}
200173
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.code.javabuilder.util;
2+
3+
import java.lang.management.ClassLoadingMXBean;
4+
import java.lang.management.ManagementFactory;
5+
import java.lang.management.MemoryPoolMXBean;
6+
import java.util.List;
7+
import org.code.protocol.LoggerUtils;
8+
9+
public class ProfilingUtils {
10+
private ProfilingUtils() {
11+
throw new UnsupportedOperationException("Instantiation of utility class is not allowed.");
12+
}
13+
14+
/*
15+
Log current and peak memory usage across all memory pools. Also log currently loaded and unload class counts.
16+
*/
17+
public static void logMemoryUsage() {
18+
List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
19+
for (MemoryPoolMXBean memoryPoolMXBean : memoryPoolMXBeans) {
20+
String usageMessage =
21+
String.format(
22+
"Memory pool %s\n\t Usage: %d\n\tPeak Usage %d",
23+
memoryPoolMXBean.getName(),
24+
memoryPoolMXBean.getUsage().getUsed(),
25+
memoryPoolMXBean.getPeakUsage().getUsed());
26+
LoggerUtils.logInfo(usageMessage);
27+
}
28+
ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();
29+
String classLoadingMessage =
30+
String.format(
31+
"Loaded classes: %d, Unloaded classes: %d",
32+
classLoadingMXBean.getLoadedClassCount(), classLoadingMXBean.getUnloadedClassCount());
33+
LoggerUtils.logInfo(classLoadingMessage);
34+
}
35+
}

0 commit comments

Comments
 (0)