Skip to content

Commit 399d713

Browse files
committed
update detection of OpenJdk8 log files
1 parent 7976cec commit 399d713

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFactory.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,18 +161,17 @@ else if (s.contains(" (young)") || s.contains("G1Ergonomics") || s.contains(" (m
161161
// G1 logger usually starts with "<timestamp>: [GC pause (young)...]"
162162
// but can start with <timestamp>: [G1Ergonomics (Heap Sizing) expand the heap...
163163
// with certain logging flaggs.
164-
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Sun 1.6.x .. 1.8.x G1 collector");
164+
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Sun / Oracle / OpenJdk 1.6.x .. 1.8.x G1 collector");
165165
return new DataReaderSun1_6_0G1(gcResource, in, GcLogType.SUN1_6G1);
166166
}
167-
else if (s.contains("-XX:+UseSerialGC") || s.contains("-XX:+UseParallelGC") || s.contains("-XX:+UseConcMarkSweepGC")
168-
|| s.contains("-XX:+UseShenandoahGC")) {
169-
170-
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Sun 1.6.x .. 1.8.x");
167+
else if (s.contains("CommandLine flags:")) {
168+
// all OpenJdk logs with non G1 gc collector
169+
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Oracle / OpenJdk 1.8.x");
171170
return new DataReaderSun1_6_0(gcResource, in, GcLogType.SUN1_6);
172171
}
173172
else if (s.contains("[Times:") || s.contains("[Pause Init Mark") /* Shenandoah, -XX:-PrintGCDetails */) {
174173
// all 1.6 lines end with a block like this "[Times: user=1.13 sys=0.08, real=0.95 secs]"
175-
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Sun 1.6.x");
174+
if (getLogger().isLoggable(Level.INFO)) getLogger().info("File format: Sun 1.6.x .. 1.8.x");
176175
return new DataReaderSun1_6_0(gcResource, in, GcLogType.SUN1_6);
177176
}
178177
else if (s.contains("CMS-initial-mark") || s.contains("PSYoungGen")) {

src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFactory.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,26 @@ public void testSun1_4_0() throws Exception {
313313
assertDataReader(DataReaderSun1_6_0.class, dr.getClass());
314314
}
315315

316+
@Test
317+
public void testOpenJdk8DockerMemory512mCpus0_5() throws IOException {
318+
// Using an OpenJdk8 docker image and letting the JVM decide on the algorithm (--memory=512m --cpus="0.5")
319+
DataReaderFactory factory = new DataReaderFactory();
320+
DataReader dr = factory.getDataReader(new GcResourceFile("byteArray"), new ByteArrayInputStream(("OpenJDK 64-Bit Server VM (25.275-b01) for linux-amd64 JRE (1.8.0_275-b01), built on Nov 6 2020 14:10:46 by \"openjdk\" with gcc 4.4.7 20120313 (Red Hat 4.4.7-23)\n" +
321+
"Memory: 4k page, physical 524288k(521828k free), swap 1048572k(1048572k free)\n" +
322+
"CommandLine flags: -XX:InitialHeapSize=8388608 -XX:MaxHeapSize=134217728 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops\n").getBytes()));
323+
assertDataReader(DataReaderSun1_6_0.class, dr.getClass());
324+
}
325+
326+
@Test
327+
public void testOpenJdk8DockerMemory2gCpus2() throws IOException {
328+
// Using an OpenJdk8 docker image and letting the JVM decide on the algorithm (--memory=2g --cpus="2")
329+
DataReaderFactory factory = new DataReaderFactory();
330+
DataReader dr = factory.getDataReader(new GcResourceFile("byteArray"), new ByteArrayInputStream(("OpenJDK 64-Bit Server VM (25.275-b01) for linux-amd64 JRE (1.8.0_275-b01), built on Nov 6 2020 14:10:46 by \"openjdk\" with gcc 4.4.7 20120313 (Red Hat 4.4.7-23)\n" +
331+
"Memory: 4k page, physical 2097152k(2094956k free), swap 1048572k(1048572k free)\n" +
332+
"CommandLine flags: -XX:InitialHeapSize=33554432 -XX:MaxHeapSize=536870912 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC\n").getBytes()));
333+
assertDataReader(DataReaderSun1_6_0.class, dr.getClass());
334+
}
335+
316336
@Test
317337
public void testOracleG1J8() throws Exception {
318338
DataReaderFactory factory = new DataReaderFactory();

0 commit comments

Comments
 (0)