From c720d13febf16055362c533fa56426b7de4a3d56 Mon Sep 17 00:00:00 2001 From: gelder Date: Mon, 18 Apr 2016 23:02:12 +0200 Subject: [PATCH 1/8] Extend DataReader for Sun to avoid warning at begin and end of rotated logfiles --- .../gcviewer/imp/AbstractDataReaderSun.java | 18 +++++----- .../perf/gcviewer/imp/DataReaderSun1_6_0.java | 23 +++++-------- .../gcviewer/imp/DataReaderSun1_6_0G1.java | 24 +++++--------- .../gcviewer/imp/TestDataReaderSun1_6_0.java | 32 +++++++++++------- .../imp/TestDataReaderSun1_6_0G1.java | 33 ++++++++++++------- .../openjdk/SampleSun1_8_0RollingLogfile.txt | 5 +++ 6 files changed, 74 insertions(+), 61 deletions(-) create mode 100644 src/test/resources/openjdk/SampleSun1_8_0RollingLogfile.txt diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/AbstractDataReaderSun.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/AbstractDataReaderSun.java index fb45218b..f27966ac 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/AbstractDataReaderSun.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/AbstractDataReaderSun.java @@ -1,5 +1,13 @@ package com.tagtraum.perf.gcviewer.imp; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.ExtendedType; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.GcPattern; +import com.tagtraum.perf.gcviewer.model.GCEvent; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.util.NumberParser; +import com.tagtraum.perf.gcviewer.util.ParseInformation; + import java.io.IOException; import java.io.InputStream; import java.io.LineNumberReader; @@ -14,14 +22,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.ExtendedType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.GcPattern; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.util.NumberParser; -import com.tagtraum.perf.gcviewer.util.ParseInformation; - /** * The AbstractDataReaderSun is the base class of most Sun / Oracle parser implementations. *

@@ -45,6 +45,8 @@ public abstract class AbstractDataReaderSun extends AbstractDataReader { protected static final String LOG_INFORMATION_HOTSPOT = "Java HotSpot"; protected static final String LOG_INFORMATION_MEMORY = "Memory:"; protected static final String LOG_INFORMATION_COMMANDLINE_FLAGS = "CommandLine flags:"; + protected static final String LOGFILE_ROLLING_BEGIN = "GC log file created"; // Printed at beginning of file when -XX:+UseGCLogFileRotation is used (since 7u76) + protected static final String LOGFILE_ROLLING_END = "GC log file has reached the maximum size. Saved as"; // Printed at end of file when -XX:+UseGCLogFileRotation is used (since 7u76) protected static final List LOG_INFORMATION_STRINGS = new LinkedList(); static { diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0.java index 78a5173b..100d424e 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0.java @@ -1,6 +1,10 @@ package com.tagtraum.perf.gcviewer.imp; -import java.io.BufferedReader; +import com.tagtraum.perf.gcviewer.model.*; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.*; +import com.tagtraum.perf.gcviewer.util.NumberParser; +import com.tagtraum.perf.gcviewer.util.ParseInformation; + import java.io.IOException; import java.io.InputStream; import java.io.LineNumberReader; @@ -13,20 +17,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.CollectionType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Concurrency; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.ExtendedType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.GcPattern; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; -import com.tagtraum.perf.gcviewer.model.ConcurrentGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.model.VmOperationEvent; -import com.tagtraum.perf.gcviewer.util.NumberParser; -import com.tagtraum.perf.gcviewer.util.ParseInformation; - /** * Parses log output from Sun / Oracle Java 1.4 / 1.5 / 1.6. / 1.7 / 1.8. *

@@ -250,6 +240,9 @@ else if (startsWith(line, LOG_INFORMATION_STRINGS, false)) { getLogger().info(line); continue; } + else if (line.indexOf(LOGFILE_ROLLING_BEGIN) > 0 || line.indexOf(LOGFILE_ROLLING_END) > 0) { + continue; + } if (line.indexOf(CMS_ABORT_PRECLEAN) >= 0) { // line contains like " CMS: abort preclean due to time " diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0G1.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0G1.java index e45a5e32..bc7f38f4 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0G1.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0G1.java @@ -1,6 +1,10 @@ package com.tagtraum.perf.gcviewer.imp; -import java.io.BufferedReader; +import com.tagtraum.perf.gcviewer.model.*; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.*; +import com.tagtraum.perf.gcviewer.util.NumberParser; +import com.tagtraum.perf.gcviewer.util.ParseInformation; + import java.io.IOException; import java.io.InputStream; import java.io.LineNumberReader; @@ -12,21 +16,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.CollectionType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Concurrency; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.ExtendedType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.GcPattern; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; -import com.tagtraum.perf.gcviewer.model.ConcurrentGCEvent; -import com.tagtraum.perf.gcviewer.model.G1GcEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.model.VmOperationEvent; -import com.tagtraum.perf.gcviewer.util.NumberParser; -import com.tagtraum.perf.gcviewer.util.ParseInformation; - /** * Parses log output from Sun / Oracle Java 1.6. / 1.7. *

@@ -180,6 +169,9 @@ else if (startsWith(line, LOG_INFORMATION_STRINGS, false)) { getLogger().info(line); continue; } + else if (line.indexOf(LOGFILE_ROLLING_BEGIN) > 0 || line.indexOf(LOGFILE_ROLLING_END) > 0) { + continue; + } // remove G1 ergonomics pieces if (line.indexOf(G1_ERGONOMICS) >= 0) { diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java index e9cfd812..34c5dea7 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java @@ -1,10 +1,10 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GCEvent; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -13,12 +13,9 @@ import java.time.format.DateTimeFormatter; import java.util.logging.Level; -import org.junit.Test; - -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.*; public class TestDataReaderSun1_6_0 { @@ -920,4 +917,17 @@ public void cmsConcurrentModeFailureWithComma() throws Exception { assertThat("parse warning count", handler.getCount(), is(0)); } + @Test + public void logfileRollingProducesNoWarnings() throws Exception { + TestLogHandler handler = new TestLogHandler(); + handler.setLevel(Level.WARNING); + GCResource gcResource = new GCResource("SampleSun1_8_0RollingLogfile.txt"); + gcResource.getLogger().addHandler(handler); + + InputStream in = getInputStream(gcResource.getResourceName()); + DataReader reader = new DataReaderSun1_6_0(gcResource, in, GcLogType.SUN1_6); + reader.read(); + + assertThat("number of errors", handler.getCount(), is(0)); + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java index 500ee1b9..914bd861 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java @@ -1,10 +1,10 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -13,12 +13,9 @@ import java.time.format.DateTimeFormatter; import java.util.logging.Level; -import org.junit.Test; - -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; public class TestDataReaderSun1_6_0G1 { @@ -397,4 +394,18 @@ public void printHeapAtGcPrintTenuringDistributionFullGc() throws Exception { assertThat("heap size", model.getHeapAllocatedSizes().getMax(), is(10240 * 1024)); assertThat("number of errors", handler.getCount(), is(0)); } + + @Test + public void logfileRollingProducesNoWarnings() throws Exception { + TestLogHandler handler = new TestLogHandler(); + handler.setLevel(Level.WARNING); + GCResource gcResource = new GCResource("SampleSun1_8_0RollingLogfile.txt"); + gcResource.getLogger().addHandler(handler); + + InputStream in = getInputStream(gcResource.getResourceName()); + DataReader reader = new DataReaderSun1_6_0G1(gcResource, in, GcLogType.SUN1_6G1); + reader.read(); + + assertThat("number of errors", handler.getCount(), is(0)); + } } diff --git a/src/test/resources/openjdk/SampleSun1_8_0RollingLogfile.txt b/src/test/resources/openjdk/SampleSun1_8_0RollingLogfile.txt new file mode 100644 index 00000000..ee455fc9 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0RollingLogfile.txt @@ -0,0 +1,5 @@ +2016-04-14 22:37:22 GC log file created logs/garbageCollection.log.1 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9157704k free), swap 20473812k(9756156k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14 22:41:41 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.1 From 5f81c2a14e29436f54ec8667056304aac0c3ac2f Mon Sep 17 00:00:00 2001 From: gelder Date: Mon, 25 Apr 2016 22:09:46 +0200 Subject: [PATCH 2/8] Refactoring: Make GcResource an interface to allow different types of implementation Different kind of GcResources may exist that should be treated uniformly. This allows to have "real" file backed GcResources as well as artificially assembled ones that are backed by more than one file. If required, other subclasses can be created for GcResources that are not backed by any file at all. --- .../com/tagtraum/perf/gcviewer/GCViewer.java | 18 +- .../perf/gcviewer/ctrl/action/OpenURL.java | 17 +- .../impl/GCModelLoaderControllerImpl.java | 7 +- .../gcviewer/ctrl/impl/GCModelLoaderImpl.java | 17 +- .../ctrl/impl/GCViewerGuiController.java | 25 ++- .../perf/gcviewer/imp/DataReaderFacade.java | 19 +- .../gcviewer/model/AbstractGcResource.java | 92 +++++++++ .../perf/gcviewer/model/GCResource.java | 185 +++--------------- .../perf/gcviewer/model/GcResourceFile.java | 100 ++++++++++ .../perf/gcviewer/view/ChartPanelView.java | 33 +--- .../gcviewer/view/model/GCResourceGroup.java | 30 ++- .../perf/gcviewer/ImportPerformanceTest.java | 10 +- .../gcviewer/ctrl/impl/TestGCModelLoader.java | 14 +- .../impl/TestGCModelLoaderController.java | 27 ++- .../imp/TestAbstractDataReaderSun.java | 16 +- .../gcviewer/imp/TestDataReaderFacade.java | 24 ++- .../gcviewer/imp/TestDataReaderFactory.java | 58 +++--- .../gcviewer/imp/TestDataReaderHPUX1_2.java | 4 +- .../gcviewer/imp/TestDataReaderHPUX1_4_1.java | 4 +- .../gcviewer/imp/TestDataReaderIBM1_2_2.java | 4 +- .../gcviewer/imp/TestDataReaderIBM1_3_1.java | 4 +- .../gcviewer/imp/TestDataReaderIBM1_4_2.java | 4 +- .../gcviewer/imp/TestDataReaderIBMJ9_5_0.java | 4 +- .../imp/TestDataReaderIBMi5OS1_4_2.java | 4 +- .../imp/TestDataReaderJRockit1_4_2.java | 8 +- .../imp/TestDataReaderJRockit1_5_0.java | 15 +- .../imp/TestDataReaderJRockit1_6_0.java | 13 +- .../gcviewer/imp/TestDataReaderSun1_2_2.java | 8 +- .../gcviewer/imp/TestDataReaderSun1_3_1.java | 8 +- .../imp/TestDataReaderSun1_3_1_19.java | 6 +- .../gcviewer/imp/TestDataReaderSun1_4_0.java | 15 +- .../gcviewer/imp/TestDataReaderSun1_5_0.java | 16 +- .../gcviewer/imp/TestDataReaderSun1_6_0.java | 109 ++++++----- .../imp/TestDataReaderSun1_6_0G1.java | 49 ++--- .../gcviewer/imp/TestDataReaderSun1_7_0.java | 50 +++-- .../imp/TestDataReaderSun1_7_0G1.java | 75 ++++--- .../gcviewer/imp/TestDataReaderSun1_8_0.java | 13 +- .../imp/TestDataReaderSun1_8_0G1.java | 13 +- .../perf/gcviewer/model/TestGCResource.java | 10 +- .../view/model/TestGCResourceGroup.java | 19 +- .../model/TestRecentGCResourcesModel.java | 10 +- 41 files changed, 601 insertions(+), 556 deletions(-) create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java diff --git a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java index fa5286f8..a815c88b 100755 --- a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java @@ -1,12 +1,5 @@ package com.tagtraum.perf.gcviewer; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.util.logging.Level; -import java.util.logging.Logger; - import com.tagtraum.perf.gcviewer.ctrl.impl.GCViewerGuiController; import com.tagtraum.perf.gcviewer.exp.DataWriter; import com.tagtraum.perf.gcviewer.exp.DataWriterType; @@ -14,9 +7,16 @@ import com.tagtraum.perf.gcviewer.imp.DataReaderException; import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.view.SimpleChartRenderer; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * Main class of GCViewer. Parses command line parameters if there are any and either remains * in command line mode or starts the gui (depending on parameters). @@ -72,7 +72,7 @@ private void export(String gcFilename, String summaryFilePath, String chartFileP throws IOException, DataReaderException { DataReaderFacade dataReaderFacade = new DataReaderFacade(); - GCModel model = dataReaderFacade.loadModel(new GCResource(gcFilename)); + GCModel model = dataReaderFacade.loadModel(new GcResourceFile(gcFilename)); exportType(model, summaryFilePath, type); if (chartFilePath != null) diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenURL.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenURL.java index a02a2228..00e30111 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenURL.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenURL.java @@ -1,20 +1,17 @@ package com.tagtraum.perf.gcviewer.ctrl.action; -import java.awt.Toolkit; -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.JFrame; -import javax.swing.KeyStroke; - import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; -import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.util.LocalisationHelper; import com.tagtraum.perf.gcviewer.view.ActionCommands; import com.tagtraum.perf.gcviewer.view.OpenUrlView; import com.tagtraum.perf.gcviewer.view.model.RecentGCResourcesModel; import com.tagtraum.perf.gcviewer.view.util.ImageHelper; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; + /** * @author Hendrik Schreiber * Date: May 20, 2005 @@ -43,10 +40,10 @@ public void setRecentResourceNamesModel(RecentGCResourcesModel recentResourceNam public void actionPerformed(ActionEvent e) { if (view.showDialog()) { if (view.isAddCheckBoxSelected()) { - controller.add(new GCResource(view.getSelectedItem())); + controller.add(new GcResourceFile(view.getSelectedItem())); } else { - controller.open(new GCResource(view.getSelectedItem())); + controller.open(new GcResourceFile(view.getSelectedItem())); } } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java index f7911291..da4d315e 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java @@ -4,6 +4,7 @@ import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderGroupTracker; import com.tagtraum.perf.gcviewer.ctrl.impl.FileDropTargetListener.DropFlavor; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.view.GCDocument; import com.tagtraum.perf.gcviewer.view.GCViewerGui; @@ -44,7 +45,7 @@ public class GCModelLoaderControllerImpl implements GCModelLoaderController { public void add(File[] files) { List gcResourceList = new ArrayList<>(); for (File file : files) { - GCResource gcResource = new GCResource(file.getAbsolutePath()); + GCResource gcResource = new GcResourceFile(file.getAbsolutePath()); gcResourceList.add(gcResource); addGCResource(gcResource); @@ -135,7 +136,7 @@ private void openGCResource(GCResource gcResource) { public void open(File[] files) { List gcResourceList = new ArrayList(); for (File file : files) { - GCResource gcResource = new GCResource(file.getAbsolutePath()); + GCResource gcResource = new GcResourceFile(file.getAbsolutePath()); gcResourceList.add(gcResource); } @@ -151,7 +152,7 @@ public void open(GCResource gcResource) { @Override public void open(List gcResourceList) { for (int i = 0; i < gcResourceList.size(); ++i) { - GCResource gcResource = new GCResource(gcResourceList.get(i).getResourceName()); + GCResource gcResource = new GcResourceFile(gcResourceList.get(i).getResourceName()); if (i == 0) { openGCResource(gcResource); diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java index cf30260a..60e60ae9 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java @@ -21,7 +21,7 @@ *

Date: November 8, 2013

*/ public class GCModelLoaderImpl extends SwingWorker implements GCModelLoader { - + private final DataReaderFacade dataReaderFacade; private final GCResource gcResource; @@ -38,7 +38,7 @@ protected GCModel doInBackground() throws Exception { setProgress(0); final GCModel result; try { - result = dataReaderFacade.loadModel(gcResource); + result = dataReaderFacade.loadModel(gcResource); } catch (DataReaderException | RuntimeException e) { Logger logger = gcResource.getLogger(); @@ -57,16 +57,17 @@ protected void done() { gcResource.setModel(get()); // TODO delete gcResource.getModel().printDetailedInformation(); - } + } catch (InterruptedException e) { logger.log(Level.FINE, "model get() interrupted", e); - } + } catch (ExecutionException | RuntimeException e) { if (logger.isLoggable(Level.WARNING)) - logger.log(Level.WARNING, "Failed to create GCModel from " + gcResource.getResourceName(), e); + logger.log(Level.WARNING, "Failed to create GCModel from " + gcResource.getResourceName(), e); } } - + + @Override public GCResource getGcResource() { return gcResource; } @@ -76,5 +77,5 @@ public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName() == MonitoredBufferedInputStream.PROGRESS) { setProgress((int)evt.getNewValue()); } - } -} \ No newline at end of file + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java index 20d56cab..a511a59a 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java @@ -1,20 +1,8 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.util.LinkedList; -import java.util.List; -import java.util.Map.Entry; - -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JInternalFrame; -import javax.swing.SwingUtilities; - import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; import com.tagtraum.perf.gcviewer.ctrl.action.OpenFile; -import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.view.ActionCommands; import com.tagtraum.perf.gcviewer.view.GCDocument; import com.tagtraum.perf.gcviewer.view.GCViewerGui; @@ -22,6 +10,15 @@ import com.tagtraum.perf.gcviewer.view.model.GCPreferences; import com.tagtraum.perf.gcviewer.view.model.GCResourceGroup; +import javax.swing.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + /** * Main controller class of GCViewer. * @@ -137,7 +134,7 @@ public void run() { @Override public void run() { - modelLoaderController.open(new GCResource(resourceName)); + modelLoaderController.open(new GcResourceFile(resourceName)); } }; diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java index e2a68498..2ac68fa6 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java @@ -1,5 +1,12 @@ package com.tagtraum.perf.gcviewer.imp; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.util.BuildInfoReader; +import com.tagtraum.perf.gcviewer.util.HttpUrlConnectionHelper; +import com.tagtraum.perf.gcviewer.util.LocalisationHelper; + import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; @@ -12,12 +19,6 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Logger; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.util.BuildInfoReader; -import com.tagtraum.perf.gcviewer.util.HttpUrlConnectionHelper; -import com.tagtraum.perf.gcviewer.util.LocalisationHelper; - /** * DataReaderFacade is a helper class providing a simple interface to read a gc log file * including standard error handling. @@ -49,6 +50,8 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { if (gcResource == null) { throw new NullPointerException("gcResource must never be null"); } + if(!(gcResource instanceof GcResourceFile)) + throw new UnsupportedOperationException("Only supported for files!"); DataReaderException dataReaderException = new DataReaderException(); GCModel model = null; @@ -57,7 +60,7 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { try { logger.info("GCViewer version " + BuildInfoReader.getVersion() + " (" + BuildInfoReader.getBuildDate() + ")"); - model = readModel(gcResource); + model = readModel((GcResourceFile) gcResource); } catch (RuntimeException | IOException e) { dataReaderException.initCause(e); @@ -79,7 +82,7 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { * @return GCModel containing events parsed from gcResource * @throws IOException problem reading the data */ - private GCModel readModel(GCResource gcResource) throws IOException { + private GCModel readModel(GcResourceFile gcResource) throws IOException { URL url = gcResource.getResourceNameAsUrl(); DataReaderFactory factory = new DataReaderFactory(); long contentLength = 0L; diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java new file mode 100644 index 00000000..1760c808 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java @@ -0,0 +1,92 @@ +package com.tagtraum.perf.gcviewer.model; + +import javax.swing.event.SwingPropertyChangeSupport; +import java.beans.PropertyChangeListener; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Logger; + +/** + * Base class for {@link GCResource} implementations + * + * @author martin.geldmacher (refactored) + */ +public abstract class AbstractGcResource implements GCResource +{ + private static final AtomicInteger COUNT = new AtomicInteger(0); + private String resourceName; + private GCModel model; + private SwingPropertyChangeSupport propertyChangeSupport; + private Logger logger; + private boolean isReload; + private boolean isReadCancelled; + + public AbstractGcResource(String resourceName) + { + super(); + this.model = new GCModel(); + this.propertyChangeSupport = new SwingPropertyChangeSupport(this); + logger = Logger.getLogger("GCResource".concat(Integer.toString(COUNT.incrementAndGet()))); + this.resourceName = resourceName; + } + + @Override + public String getResourceName() { + return resourceName; + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.addPropertyChangeListener(listener); + } + + @Override + public Logger getLogger() { + return logger; + } + + @Override + public GCModel getModel() { + return model; + } + + @Override + public boolean isReload() { + return isReload; + } + + @Override + public boolean isReadCancelled() { + return isReadCancelled; + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.removePropertyChangeListener(listener); + } + + @Override + public void setIsReload(boolean isReload) { + this.isReload = isReload; + setIsReadCancelled(false); + } + + @Override + public void setIsReadCancelled(boolean isReadCancelled) { + // TODO i18n + this.getLogger().info("--> cancel requested"); + this.isReadCancelled = isReadCancelled; + } + + @Override + public void setModel(GCModel model) { + GCModel oldModel = this.model; + this.model = model; + propertyChangeSupport.firePropertyChange(GcResourceFile.PROPERTY_MODEL, oldModel, model); + } + + @Override + public void reset() { + this.isReadCancelled = false; + this.isReload = false; + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java index 16d3a790..8e503d9c 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java @@ -1,186 +1,61 @@ package com.tagtraum.perf.gcviewer.model; import java.beans.PropertyChangeListener; -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; -import javax.swing.event.SwingPropertyChangeSupport; - /** - * Identifies a GC resource: a file or URL resource containing GC info. + * Interface for GC resources * * @author Hans Bausewein * @author Joerg Wuethrich *

Date: November 8, 2013

*/ -public class GCResource { - public static final String PROPERTY_MODEL = "model"; - private static final AtomicInteger COUNT = new AtomicInteger(0); - - private String resourceName; - private GCModel model; - private SwingPropertyChangeSupport propertyChangeSupport; - private Logger logger; - private boolean isReload; - private boolean isReadCancelled; - - public GCResource(String resourceName) { - super(); - - if (resourceName == null) { - throw new IllegalArgumentException("resourceName cannot be null"); - } - - this.resourceName = resourceName; - this.propertyChangeSupport = new SwingPropertyChangeSupport(this); - this.model = new GCModel(); - - logger = Logger.getLogger("GCResource".concat(Integer.toString(COUNT.incrementAndGet()))); - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - this.propertyChangeSupport.addPropertyChangeListener(listener); - } - - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - GCResource other = (GCResource) obj; - if (resourceName == null) { - if (other.resourceName != null) { - return false; - } - } - else if (!getResourceNameAsUrlString().equals(other.getResourceNameAsUrlString())) { - return false; - } - return true; - } - - public Logger getLogger() { - return logger; - } - - public GCModel getModel() { - return model; - } - - public String getResourceName() { - return resourceName; - } - - public URL getResourceNameAsUrl() throws MalformedURLException { - URL url = null; - if (getResourceName().startsWith("http") || getResourceName().startsWith("file")) { - url = new URL(getResourceName()); - } - else { - url = new File(getResourceName()).toURI().toURL(); - } +public interface GCResource +{ + void addPropertyChangeListener(PropertyChangeListener listener); - return url; - } + Logger getLogger(); - /** - * Same as {@link #getResourceNameAsUrl()}, but still returns a string, if MalFormedURLException occurred. - * @return same as getResourceNameAsUrl(), but without Exception - */ - public String getResourceNameAsUrlString() { - try { - return getResourceNameAsUrl().toString(); - } - catch (MalformedURLException e) { - return "malformed url: " + resourceName; - } - } + GCModel getModel(); - @Override - public int hashCode() { - int prime = 31; - int result = 1; - result = prime * result + ((resourceName == null) ? 0 : getResourceNameAsUrlString().hashCode()); + String getResourceName(); - return result; - } - - /** - * Returns true, if the underlying resource has changed. - * @return true, if the underlying resource has changed. - */ - public boolean hasUnderlyingResourceChanged() { - if (this.model.getURL() == null) { - return true; - } - - return this.model.isDifferent(this.model.getURL()); - } + /** + * Returns true, if the underlying resource has changed. + * @return true, if the underlying resource has changed. + */ + boolean hasUnderlyingResourceChanged(); /** * If this resource is being reloaded, this will return true. * @return true if this resource is being reloaded. */ - public boolean isReload() { - return isReload; - } + boolean isReload(); - /** - * Returns true, if reading of this GCResource should be cancelled. - * @return true, if reading should be cancelled - */ - public boolean isReadCancelled() { - return isReadCancelled; - } + /** + * Returns true, if reading of this GCResource should be cancelled. + * @return true, if reading should be cancelled + */ + boolean isReadCancelled(); - public void removePropertyChangeListener(PropertyChangeListener listener) { - this.propertyChangeSupport.removePropertyChangeListener(listener); - } + void removePropertyChangeListener(PropertyChangeListener listener); /** * if this resource is being reloaded, set this property to true. * @param isReload true, if this resource is being reloaded */ - public void setIsReload(boolean isReload) { - this.isReload = isReload; - setIsReadCancelled(false); - } + void setIsReload(boolean isReload); - /** - * Indicate, that reading of this GCResource should be cancelled. - * @param isReadCancelled true, if read should be cancelled - */ - public void setIsReadCancelled(boolean isReadCancelled) { - // TODO i18n - this.getLogger().info("--> cancel requested"); - this.isReadCancelled = isReadCancelled; - } - - public void setModel(GCModel model) { - GCModel oldModel = this.model; - this.model = model; - propertyChangeSupport.firePropertyChange(PROPERTY_MODEL, oldModel, model); - } - - /** - * reset internal boolean state to default (e.g. readCancelled) - */ - public void reset() { - this.isReadCancelled = false; - this.isReload = false; - } + /** + * Indicate, that reading of this GCResource should be cancelled. + * @param isReadCancelled true, if read should be cancelled + */ + void setIsReadCancelled(boolean isReadCancelled); - @Override - public String toString() { - return "GCResource [resourceNameAsUrlString=" + getResourceNameAsUrlString() + ", isReload=" + isReload - + ", logger=" + logger + ", model=" + model + "]"; - } + void setModel(GCModel model); + /** + * reset internal boolean state to default (e.g. readCancelled) + */ + void reset(); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java new file mode 100644 index 00000000..297052af --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java @@ -0,0 +1,100 @@ +package com.tagtraum.perf.gcviewer.model; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * Identifies a GC resource: a file or URL resource containing GC info. + * + * @author Hans Bausewein + * @author Joerg Wuethrich + *

Date: November 8, 2013

+ */ +public class GcResourceFile extends AbstractGcResource +{ + public static final String PROPERTY_MODEL = "model"; + + public GcResourceFile(File file) + { + this(file.getAbsolutePath()); + } + + public GcResourceFile(String resourceName) { + super(resourceName); + + if (resourceName == null) { + throw new IllegalArgumentException("resourceName cannot be null"); + } + + } + + public URL getResourceNameAsUrl() throws MalformedURLException { + URL url = null; + if (getResourceName().startsWith("http") || getResourceName().startsWith("file")) { + url = new URL(getResourceName()); + } + else { + url = new File(getResourceName()).toURI().toURL(); + } + + return url; + } + + /** + * Same as {@link #getResourceNameAsUrl()}, but still returns a string, if MalFormedURLException occurred. + * @return same as getResourceNameAsUrl(), but without Exception + */ + public String getResourceNameAsUrlString() { + try { + return getResourceNameAsUrl().toString(); + } + catch (MalformedURLException e) { + return "malformed url: " + getResourceName(); + } + } + + @Override + public boolean hasUnderlyingResourceChanged() { + if (getModel().getURL() == null) { + return true; + } + + return getModel().isDifferent(getModel().getURL()); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + GcResourceFile other = (GcResourceFile) obj; + if (getResourceName() == null) { + if (other.getResourceName() != null) { + return false; + } + } + else if (!getResourceNameAsUrlString().equals(other.getResourceNameAsUrlString())) { + return false; + } + return true; + } + + @Override + public int hashCode() { + int prime = 31; + int result = 1; + result = prime * result + ((getResourceName() == null) ? 0 : getResourceNameAsUrlString().hashCode()); + + return result; + } + + @Override + public String toString() { + return "GCResourceFile [resourceNameAsUrlString=" + getResourceNameAsUrlString() + ", isReload=" + isReload() + + ", logger=" + getLogger() + ", model=" + getModel() + "]"; + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/ChartPanelView.java b/src/main/java/com/tagtraum/perf/gcviewer/view/ChartPanelView.java index c1786dc8..e7ec34b7 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/ChartPanelView.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/ChartPanelView.java @@ -1,33 +1,20 @@ package com.tagtraum.perf.gcviewer.view; -import java.awt.Color; -import java.awt.GradientPaint; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.util.LocalisationHelper; +import com.tagtraum.perf.gcviewer.view.model.GCPreferences; +import com.tagtraum.perf.gcviewer.view.util.ImageHelper; + +import javax.swing.*; +import javax.swing.event.SwingPropertyChangeSupport; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.logging.Logger; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollBar; -import javax.swing.JScrollPane; -import javax.swing.JTabbedPane; -import javax.swing.SwingConstants; -import javax.swing.event.SwingPropertyChangeSupport; - -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.util.LocalisationHelper; -import com.tagtraum.perf.gcviewer.view.model.GCPreferences; -import com.tagtraum.perf.gcviewer.view.util.ImageHelper; - /** * This class holds all chart and model data panels and provides them to {@link GCDocument} @@ -158,7 +145,7 @@ public void close() { public void propertyChange(PropertyChangeEvent evt) { // TODO if there were parser warnings, change color of parser tab if (evt.getSource() instanceof GCResource - && GCResource.PROPERTY_MODEL.equals(evt.getPropertyName())) { + && GcResourceFile.PROPERTY_MODEL.equals(evt.getPropertyName())) { GCResource gcResource = (GCResource) evt.getSource(); updateModel(gcResource); diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java index 003511b6..8feae3f4 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java @@ -1,13 +1,14 @@ package com.tagtraum.perf.gcviewer.view.model; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; + import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -import com.tagtraum.perf.gcviewer.model.GCResource; - /** *

Holds a group of resource names (those displayed in the same GCDocument).

* @@ -21,7 +22,7 @@ public class GCResourceGroup { public GCResourceGroup(List gcResourceList) { this.gcResourceList = gcResourceList.stream() - .map(gcResource -> new GCResource(gcResource.getResourceName())) + .map(gcResource -> new GcResourceFile(gcResource.getResourceName())) .collect(Collectors.toList()); } @@ -74,7 +75,15 @@ public String getUrlGroupString() { StringBuilder sb = new StringBuilder(); for (GCResource gcResource : gcResourceList) { try { - sb.append(gcResource.getResourceNameAsUrl().toString()).append(";"); + String url; + if(gcResource instanceof GcResourceFile) { + url = ((GcResourceFile) gcResource).getResourceNameAsUrl().toString(); + } + else { + // no URL available -> fallback + url = gcResource.getResourceName(); + } + sb.append(url).append(";"); } catch (MalformedURLException e) { // ignore it @@ -107,7 +116,14 @@ public String getGroupStringShort() { return sb.toString(); } else { - return gcResourceList.get(0).getResourceNameAsUrlString(); + GCResource singleResource = gcResourceList.get(0); + if(singleResource instanceof GcResourceFile) + { + return ((GcResourceFile) singleResource).getResourceNameAsUrlString(); + } + else + // no URL available -> fallback + return singleResource.getResourceName(); } } @@ -123,7 +139,7 @@ public int hashCode() { private void setGCResourceList(String[] resourceNames) { gcResourceList = new ArrayList<>(); for (String resourceName : resourceNames) { - gcResourceList.add(new GCResource(resourceName)); + gcResourceList.add(new GcResourceFile(resourceName)); } } @@ -132,4 +148,4 @@ public String toString() { return "RecentGCResourceGroup [gcResourceList=" + gcResourceList + "]"; } -} \ No newline at end of file +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ImportPerformanceTest.java b/src/test/java/com/tagtraum/perf/gcviewer/ImportPerformanceTest.java index 77b410a6..53f01cda 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/ImportPerformanceTest.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/ImportPerformanceTest.java @@ -1,12 +1,12 @@ package com.tagtraum.perf.gcviewer; -import java.io.FileInputStream; -import java.io.IOException; - import com.tagtraum.perf.gcviewer.imp.DataReader; import com.tagtraum.perf.gcviewer.imp.DataReaderFactory; import com.tagtraum.perf.gcviewer.math.IntData; -import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; + +import java.io.FileInputStream; +import java.io.IOException; /** * Created by IntelliJ IDEA. @@ -20,7 +20,7 @@ public static void main(String[] args) throws IOException, InterruptedException IntData performanceData = new IntData(); for (int i=0; i<10; i++) { long start = System.currentTimeMillis(); - DataReader dataReader = new DataReaderFactory().getDataReader(new GCResource(args[0]), + DataReader dataReader = new DataReaderFactory().getDataReader(new GcResourceFile(args[0]), new FileInputStream(args[0])); dataReader.read(); performanceData.add((int)(System.currentTimeMillis() - start)); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoader.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoader.java index 8ec468b6..5081d73d 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoader.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoader.java @@ -1,14 +1,14 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -import org.junit.Test; - import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import org.junit.Test; + +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertThat; /** * Unittest for {@link GCModelLoaderImpl}. @@ -20,7 +20,7 @@ public class TestGCModelLoader { @Test public void loadExistingFile() throws Exception { - GCResource gcResource = new GCResource( + GCResource gcResource = new GcResourceFile( UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); GCModelLoaderImpl loader = new GCModelLoaderImpl(gcResource); loader.execute(); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java index c550448a..36392b76 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java @@ -1,7 +1,12 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.view.GCViewerGui; +import com.tagtraum.perf.gcviewer.view.model.GCPreferences; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; @@ -11,14 +16,8 @@ import java.util.ArrayList; import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.view.GCViewerGui; -import com.tagtraum.perf.gcviewer.view.model.GCPreferences; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; /** * Unittest for main controller class of GCViewerGui ({@link GCModelLoaderControllerImpl}). @@ -41,18 +40,18 @@ public void setUp() throws Exception { @Test public void openStringFail() throws Exception { - controller.open(new GCResource("does_not_exist")); + controller.open(new GcResourceFile("does_not_exist")); assertThat("number of gcdocuments", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); } - + @Test public void openString() throws Exception { assertThat("number of gcdocuments before", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(0)); - controller.open(new GCResource(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt"))); + controller.open(new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt"))); assertThat("number of gcdocuments after", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); } - + /** * Test drag and drop action on GCViewerGui. */ diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestAbstractDataReaderSun.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestAbstractDataReaderSun.java index 575aed3f..44467f37 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestAbstractDataReaderSun.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestAbstractDataReaderSun.java @@ -1,20 +1,16 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.junit.Assert.assertEquals; +import com.tagtraum.perf.gcviewer.model.*; +import com.tagtraum.perf.gcviewer.util.ParseInformation; +import org.junit.Before; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import org.junit.Before; -import org.junit.Test; - -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.util.ParseInformation; +import static org.junit.Assert.assertEquals; public class TestAbstractDataReaderSun { @@ -22,7 +18,7 @@ public class TestAbstractDataReaderSun { @Before public void setUp() throws UnsupportedEncodingException { - dataReader = new AbstractDataReaderSunSub(new GCResource("empty"), new ByteArrayInputStream(new byte[0]), GcLogType.SUN1_6); + dataReader = new AbstractDataReaderSunSub(new GcResourceFile("empty"), new ByteArrayInputStream(new byte[0]), GcLogType.SUN1_6); } /** diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java index 5930a75f..b64be95d 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java @@ -1,19 +1,17 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import org.junit.Before; +import org.junit.Test; import java.io.FileNotFoundException; import java.net.MalformedURLException; import java.util.logging.Level; -import org.junit.Before; -import org.junit.Test; - -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; +import static org.junit.Assert.*; /** * Tests the implementation of {@link DataReaderFacade}. @@ -42,7 +40,7 @@ public void setUp() throws Exception { public void loadModelStringFileExistsNoWarnings() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource(PARENT_PATH + SAMPLE_GCLOG_SUN1_6_0); + GCResource gcResource = new GcResourceFile(PARENT_PATH + SAMPLE_GCLOG_SUN1_6_0); gcResource.getLogger().addHandler(handler); final GCModel model = dataReaderFacade.loadModel(gcResource); @@ -60,7 +58,7 @@ public void loadModelStringFileExistsNoWarnings() throws Exception { public void loadModelMalformedUrl() throws Exception { try { - dataReaderFacade.loadModel(new GCResource("httpblabla")); + dataReaderFacade.loadModel(new GcResourceFile("httpblabla")); } catch (DataReaderException e) { assertNotNull("cause", e.getCause()); @@ -78,7 +76,7 @@ public void loadModelMalformedUrl() throws Exception { public void loadModelIllegalArgument() throws Exception { try { - dataReaderFacade.loadModel(new GCResource("http://")); + dataReaderFacade.loadModel(new GcResourceFile("http://")); } catch (DataReaderException e) { assertNotNull("cause", e.getCause()); @@ -95,7 +93,7 @@ public void loadModelIllegalArgument() throws Exception { @Test public void loadModelFileDoesntExists() throws Exception { try { - dataReaderFacade.loadModel(new GCResource("dummy.txt")); + dataReaderFacade.loadModel(new GcResourceFile("dummy.txt")); fail("DataReaderException expected"); } catch (DataReaderException e) { diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFactory.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFactory.java index e1e052b9..b10b78fa 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFactory.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFactory.java @@ -6,13 +6,13 @@ import java.io.IOException; import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * Tests the logic of the {@link DataReaderFactory} @@ -66,7 +66,7 @@ public void testGetDataReaderJDK6GZipped() throws Exception { String sampleGz = "SampleSun1_6_0PrintHeapAtGC.txt.gz"; try (InputStream in = getInputStreamOpenJdk(sampleGz)) { - final DataReader reader = new DataReaderFactory().getDataReader(new GCResource(sampleGz), in); + final DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(sampleGz), in); assertDataReader("getDataReader() reading " + sampleGz, DataReaderSun1_6_0.class, reader.getClass()); GCModel model = reader.read(); @@ -79,7 +79,7 @@ public void getDataReaderG1() throws Exception { String sampleFile = "SampleSun1_7_0G1-ApplicationStopped.txt"; try (InputStream in = getInputStreamOpenJdk(sampleFile)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(sampleFile), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(sampleFile), in); assertDataReader("getDataReader() reading " + sampleFile, DataReaderSun1_6_0G1.class, reader.getClass()); GCModel model = reader.read(); @@ -91,7 +91,7 @@ public void getDataReaderG1() throws Exception { public void testIBMi5OS1_4_2() throws Exception { String fileName = "SampleIBMi5OS1_4_2.txt"; try (InputStream in = getInputStreamIBM(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderIBMi5OS1_4_2.class, reader.getClass()); } } @@ -100,7 +100,7 @@ public void testIBMi5OS1_4_2() throws Exception { public void testIBMJ9_5_0() throws Exception { String fileName = "SampleIBMJ9_5_0af-global-200811_07.txt"; try (InputStream in = getInputStreamIBM(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderIBM_J9_5_0.class, reader.getClass()); } } @@ -109,7 +109,7 @@ public void testIBMJ9_5_0() throws Exception { public void testIBMJ9_R26() throws Exception { String fileName = "SampleIBMJ9_R26_GAFP1_full_header.txt"; try (InputStream in = getInputStreamIBM(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderIBM_J9_R28.class, reader.getClass()); } } @@ -118,7 +118,7 @@ public void testIBMJ9_R26() throws Exception { public void testIBMJ9_R27() throws Exception { String fileName = "SampleIBMJ9_R27_SR1_full_header.txt"; try (InputStream in = getInputStreamIBM(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderIBM_J9_R28.class, reader.getClass()); } } @@ -127,7 +127,7 @@ public void testIBMJ9_R27() throws Exception { public void testJRockit1_4GcReportGenCon() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-gencon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_4_2.class, reader.getClass()); } } @@ -136,7 +136,7 @@ public void testJRockit1_4GcReportGenCon() throws Exception { public void testJRockit1_4GcReportParallel() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-parallel.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_4_2.class, reader.getClass()); } } @@ -145,7 +145,7 @@ public void testJRockit1_4GcReportParallel() throws Exception { public void testJRockit1_4GcReportPrioPauseTime() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-gcpriopausetime.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_4_2.class, reader.getClass()); } } @@ -154,7 +154,7 @@ public void testJRockit1_4GcReportPrioPauseTime() throws Exception { public void testJRockit1_4GcReportPrioThroughput() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-gcpriothroughput.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_4_2.class, reader.getClass()); } } @@ -163,7 +163,7 @@ public void testJRockit1_4GcReportPrioThroughput() throws Exception { public void testJRockit1_4GcReportSingleCon() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-singlecon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_4_2.class, reader.getClass()); } } @@ -172,7 +172,7 @@ public void testJRockit1_4GcReportSingleCon() throws Exception { public void testJRockit1_4GenCon() throws Exception { String fileName = "SampleJRockit1_4_2gencon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -181,7 +181,7 @@ public void testJRockit1_4GenCon() throws Exception { public void testJRockit1_4GenConBig() throws Exception { String fileName = "SampleJRockit1_4_2gencon-big.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -190,7 +190,7 @@ public void testJRockit1_4GenConBig() throws Exception { public void testJRockit1_4Parallel() throws Exception { String fileName = "SampleJRockit1_4_2parallel.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -199,7 +199,7 @@ public void testJRockit1_4Parallel() throws Exception { public void testJRockit1_4PrioPauseTime() throws Exception { String fileName = "SampleJRockit1_4_2priopausetime.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -208,7 +208,7 @@ public void testJRockit1_4PrioPauseTime() throws Exception { public void testJRockit1_5GenCon() throws Exception { String fileName = "SampleJRockit1_5_12_gencon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -217,7 +217,7 @@ public void testJRockit1_5GenCon() throws Exception { public void testJRockit1_5GenConMemStats() throws Exception { String fileName = "SampleJRockit1_5_20_memstats2.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_6_0.class, reader.getClass()); } } @@ -226,7 +226,7 @@ public void testJRockit1_5GenConMemStats() throws Exception { public void testJRockit1_5GenPar() throws Exception { String fileName = "SampleJRockit1_5_12_genpar.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -235,7 +235,7 @@ public void testJRockit1_5GenPar() throws Exception { public void testJRockit1_5PrioPausetime() throws Exception { String fileName = "SampleJRockit1_5_12_gcpriopausetime.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -244,7 +244,7 @@ public void testJRockit1_5PrioPausetime() throws Exception { public void testJRockit1_5PrioThroughput() throws Exception { String fileName = "SampleJRockit1_5_12_gcpriothroughput.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -253,7 +253,7 @@ public void testJRockit1_5PrioThroughput() throws Exception { public void testJRockit1_5SimpleOpts() throws Exception { String fileName = "SampleJRockit1_5_12-gcreport-simpleopts-singlecon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_5_0.class, reader.getClass()); } } @@ -262,7 +262,7 @@ public void testJRockit1_5SimpleOpts() throws Exception { public void testJRockit1_6GenConVerbose() throws Exception { String fileName = "SampleJRockit1_6_verbose_gc_mode_gencon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_6_0.class, reader.getClass()); } } @@ -271,7 +271,7 @@ public void testJRockit1_6GenConVerbose() throws Exception { public void testJRockit1_6GenParVerbose() throws Exception { String fileName = "SampleJRockit1_6_33_gc_mode_genpar_verbosenursery.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_6_0.class, reader.getClass()); } } @@ -280,7 +280,7 @@ public void testJRockit1_6GenParVerbose() throws Exception { public void testJRockit1_6ParCon() throws Exception { String fileName = "SampleJRockit1_6_gc_mode_singleparcon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_6_0.class, reader.getClass()); } } @@ -289,7 +289,7 @@ public void testJRockit1_6ParCon() throws Exception { public void testJRockit1_6ParConVerbose() throws Exception { String fileName = "SampleJRockit1_6_verbose_gc_mode_singleparcon.txt"; try (InputStream in = getInputStreamJRockit(fileName)) { - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertDataReader(DataReaderJRockit1_6_0.class, reader.getClass()); } } @@ -297,10 +297,10 @@ public void testJRockit1_6ParConVerbose() throws Exception { @Test public void testSun1_3_1() throws Exception { DataReaderFactory factory = new DataReaderFactory(); - DataReader dr = factory.getDataReader(new GCResource("byteArray"), new ByteArrayInputStream("[GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); + DataReader dr = factory.getDataReader(new GcResourceFile("byteArray"), new ByteArrayInputStream("[GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); assertDataReader("Sun1_3_1 GC", DataReaderSun1_3_1.class, dr.getClass()); - dr = factory.getDataReader(new GCResource("byteArray2"), new ByteArrayInputStream("[Full GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); + dr = factory.getDataReader(new GcResourceFile("byteArray2"), new ByteArrayInputStream("[Full GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); assertDataReader("Sun1_3_1 Full GC", DataReaderSun1_3_1.class, dr.getClass()); } @@ -309,7 +309,7 @@ public void testSun1_4_0() throws Exception { // although the input is java 1.4 the datareader returned should be 1.6 // (DataReaderSun1_6_0 handles java 1.4, 1.5, 1.6, 1.7) DataReaderFactory factory = new DataReaderFactory(); - DataReader dr = factory.getDataReader(new GCResource("byteArray"), new ByteArrayInputStream("2.23492e-006: [GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); + DataReader dr = factory.getDataReader(new GcResourceFile("byteArray"), new ByteArrayInputStream("2.23492e-006: [GC 1087K->462K(16320K), 0.0154134 secs]".getBytes())); assertDataReader(DataReaderSun1_6_0.class, dr.getClass()); } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_2.java index 09b6e833..b9dd2f6f 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_2.java @@ -4,11 +4,11 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -22,7 +22,7 @@ public class TestDataReaderHPUX1_2 { public void testParse1() throws Exception { String fileName = "SampleHP-UX1_3.txt"; InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_HP, fileName); - DataReader reader = new DataReaderHPUX1_2(new GCResource(fileName), in); + DataReader reader = new DataReaderHPUX1_2(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 135, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_4_1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_4_1.java index 8a81d8e1..abe0f5dd 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_4_1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderHPUX1_4_1.java @@ -10,11 +10,11 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -28,7 +28,7 @@ public class TestDataReaderHPUX1_4_1 { public void testParse1() throws Exception { String fileName = "SampleHP-UX1_4_1.txt"; final InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_HP, fileName); - final DataReader reader = new DataReaderHPUX1_4_1(new GCResource(fileName), in); + final DataReader reader = new DataReaderHPUX1_4_1(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 4, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_2_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_2_2.java index 50622613..152c2f99 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_2_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_2_2.java @@ -4,11 +4,11 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -22,7 +22,7 @@ public class TestDataReaderIBM1_2_2 { public void testParse1() throws Exception { String fileName = "SampleIBM1_2_2.txt"; InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_IBM, fileName); - DataReader reader = new DataReaderIBM1_3_0(new GCResource(fileName), in); + DataReader reader = new DataReaderIBM1_3_0(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 28, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_3_1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_3_1.java index d87a72ea..36bf8c85 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_3_1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_3_1.java @@ -4,11 +4,11 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -22,7 +22,7 @@ public class TestDataReaderIBM1_3_1 { public void testParse1() throws Exception { String fileName = "SampleIBM1_3_1.txt"; InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_IBM, fileName); - DataReader reader = new DataReaderIBM1_3_1(new GCResource(fileName), in); + DataReader reader = new DataReaderIBM1_3_1(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 21, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_4_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_4_2.java index bb941990..e1a1dbe5 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_4_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBM1_4_2.java @@ -10,12 +10,12 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Ignore; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -30,7 +30,7 @@ public class TestDataReaderIBM1_4_2 { public void testParse1() throws Exception { String fileName = "SampleIBM1_4_2.txt"; final InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_IBM, fileName); - final DataReader reader = new DataReaderIBM1_4_2(new GCResource(fileName), in); + final DataReader reader = new DataReaderIBM1_4_2(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 2884, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMJ9_5_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMJ9_5_0.java index 2b896e4e..4b36fc94 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMJ9_5_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMJ9_5_0.java @@ -6,12 +6,12 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCEvent; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; /** @@ -27,7 +27,7 @@ private InputStream getInputStream(String filename) throws IOException { } private DataReader getDataReader(String fileName) throws UnsupportedEncodingException, IOException { - return new DataReaderIBM_J9_5_0(new GCResource(fileName), getInputStream(fileName)); + return new DataReaderIBM_J9_5_0(new GcResourceFile(fileName), getInputStream(fileName)); } @Test diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMi5OS1_4_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMi5OS1_4_2.java index b412d5f0..b92af1d5 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMi5OS1_4_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderIBMi5OS1_4_2.java @@ -4,11 +4,11 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** @@ -23,7 +23,7 @@ public class TestDataReaderIBMi5OS1_4_2 { public void testParse1() throws Exception { String fileName = "SampleIBMi5OS1_4_2.txt"; final InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_IBM, fileName); - final DataReader reader = new DataReaderIBMi5OS1_4_2(new GCResource(fileName), in); + final DataReader reader = new DataReaderIBMi5OS1_4_2(new GcResourceFile(fileName), in); GCModel model = reader.read(); assertEquals("number of events", 53, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_4_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_4_2.java index fe203a51..52ae945a 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_4_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_4_2.java @@ -7,13 +7,13 @@ import java.io.InputStream; import java.io.UnsupportedEncodingException; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; import com.tagtraum.perf.gcviewer.model.GCEvent; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * Date: Jan 30, 2002 @@ -27,11 +27,11 @@ private InputStream getInputStream(String fileName) throws IOException { } private DataReader getDataReader1_4(String fileName) throws UnsupportedEncodingException, IOException { - return new DataReaderJRockit1_4_2(new GCResource(fileName), getInputStream(fileName)); + return new DataReaderJRockit1_4_2(new GcResourceFile(fileName), getInputStream(fileName)); } private DataReader getDataReader1_5(String fileName) throws UnsupportedEncodingException, IOException { - return new DataReaderJRockit1_5_0(new GCResource(fileName), getInputStream(fileName)); + return new DataReaderJRockit1_5_0(new GcResourceFile(fileName), getInputStream(fileName)); } @Test @@ -138,7 +138,7 @@ public void testParseTsGCReportParallel() throws Exception { public void testParseTsGCReportPrioPauseTime() throws Exception { String fileName = "SampleJRockit1_4_2ts-gcreport-gcpriopausetime.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderFactory().getDataReader(new GCResource(fileName), in); + DataReader reader = new DataReaderFactory().getDataReader(new GcResourceFile(fileName), in); assertTrue("should be DataReaderJRockit1_4_2 (but was " + reader.toString() + ")", reader instanceof DataReaderJRockit1_4_2); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_5_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_5_0.java index 05627081..c82f67a9 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_5_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_5_0.java @@ -17,6 +17,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; @@ -51,7 +52,7 @@ private DataReader getDataReader1_6(GCResource gcResource) throws UnsupportedEnc public void testGcPrioPausetime() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleJRockit1_5_12_gcpriopausetime.txt"); + GCResource gcResource = new GcResourceFile("SampleJRockit1_5_12_gcpriopausetime.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader1_5(gcResource); @@ -72,7 +73,7 @@ public void testGcPrioPausetime() throws Exception { @Test public void testGcPrioThroughput() throws Exception { - DataReader reader = getDataReader1_5(new GCResource("SampleJRockit1_5_12_gcpriothroughput.txt")); + DataReader reader = getDataReader1_5(new GcResourceFile("SampleJRockit1_5_12_gcpriothroughput.txt")); GCModel model = reader.read(); assertEquals("count", 8, model.size()); @@ -88,7 +89,7 @@ public void testGcPrioThroughput() throws Exception { @Test public void testGenCon() throws Exception { - DataReader reader = getDataReader1_5(new GCResource("SampleJRockit1_5_12_gencon.txt")); + DataReader reader = getDataReader1_5(new GcResourceFile("SampleJRockit1_5_12_gencon.txt")); GCModel model = reader.read(); assertEquals("count", 8, model.size()); @@ -112,7 +113,7 @@ public void testGenConMemstats() throws Exception { // allthough this log file was written with JRockit 1.5 VM, it has the same structure // as a JRockit 1.6 gc log file. // TODO refactor JRockit DataReader - DataReader reader = getDataReader1_6(new GCResource("SampleJRockit1_5_20_memstats2.txt")); + DataReader reader = getDataReader1_6(new GcResourceFile("SampleJRockit1_5_20_memstats2.txt")); GCModel model = reader.read(); assertEquals("count", 11, model.size()); @@ -120,7 +121,7 @@ public void testGenConMemstats() throws Exception { @Test public void testGenPar() throws Exception { - DataReader reader = getDataReader1_5(new GCResource("SampleJRockit1_5_12_genpar.txt")); + DataReader reader = getDataReader1_5(new GcResourceFile("SampleJRockit1_5_12_genpar.txt")); GCModel model = reader.read(); assertEquals("count", 17, model.size()); @@ -137,7 +138,7 @@ public void testGenPar() throws Exception { public void testMalformedType() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.INFO); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -159,7 +160,7 @@ public void testMalformedType() throws Exception { @Test public void testSimpleOpts() throws Exception { - DataReader reader = getDataReader1_5(new GCResource("SampleJRockit1_5_12-gcreport-simpleopts-singlecon.txt")); + DataReader reader = getDataReader1_5(new GcResourceFile("SampleJRockit1_5_12-gcreport-simpleopts-singlecon.txt")); GCModel model = reader.read(); assertEquals("count", 5, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_6_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_6_0.java index beee975f..24498f3d 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_6_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderJRockit1_6_0.java @@ -11,6 +11,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; @@ -39,7 +40,7 @@ private DataReader getDataReader(GCResource gcResource) throws UnsupportedEncodi public void testGcPrioPauseSingleParCon() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleJRockit1_6_gc_mode_singleparcon.txt"); + GCResource gcResource = new GcResourceFile("SampleJRockit1_6_gc_mode_singleparcon.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -62,7 +63,7 @@ public void testGcPrioPauseSingleParCon() throws Exception { public void testGcPrioPauseSingleParConVerbose() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleJRockit1_6_verbose_gc_mode_singleparcon.txt"); + GCResource gcResource = new GcResourceFile("SampleJRockit1_6_verbose_gc_mode_singleparcon.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -91,7 +92,7 @@ public void testGcPrioPauseSingleParConVerbose() throws Exception { */ @Test public void testGenConVerbose() throws Exception { - DataReader reader = getDataReader(new GCResource("SampleJRockit1_6_verbose_gc_mode_gencon.txt")); + DataReader reader = getDataReader(new GcResourceFile("SampleJRockit1_6_verbose_gc_mode_gencon.txt")); GCModel model = reader.read(); assertEquals("count", 15, model.size()); @@ -101,7 +102,7 @@ public void testGenConVerbose() throws Exception { public void testGenParVerboseNursery() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleJRockit1_6_33_gc_mode_genpar_verbosenursery.txt"); + GCResource gcResource = new GcResourceFile("SampleJRockit1_6_33_gc_mode_genpar_verbosenursery.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -145,7 +146,7 @@ public void testGenParVerboseNursery() throws Exception { public void testMalformedType() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.INFO); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -171,7 +172,7 @@ public void testStandardLine() throws Exception { ("[INFO ][memory ] [YC#1] 9.743-9.793: YC 294974KB->122557KB (524288KB), 0.050 s, sum of pauses 49.692 ms, longest pause 49.692 ms.") .getBytes()); - DataReader reader = new DataReaderJRockit1_6_0(new GCResource("byteArray"), in); + DataReader reader = new DataReaderJRockit1_6_0(new GcResourceFile("byteArray"), in); GCModel model = reader.read(); assertEquals("count", 1, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java index c8106c71..be3100a7 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java @@ -5,13 +5,9 @@ import java.io.ByteArrayInputStream; import java.util.Iterator; +import com.tagtraum.perf.gcviewer.model.*; import org.junit.Test; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; - /** * * Date: Jan 30, 2002 @@ -36,7 +32,7 @@ public void testParse1() throws Exception { "\n" + "\n" + "\n").getBytes()); - DataReader reader = new DataReaderSun1_2_2(new GCResource("byteArray"), in); + DataReader reader = new DataReaderSun1_2_2(new GcResourceFile("byteArray"), in); GCModel model = reader.read(); assertEquals(3, model.size()); Iterator i = model.getGCEvents(); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java index 2b971c40..2b7ef760 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java @@ -6,13 +6,9 @@ import java.io.ByteArrayInputStream; import java.util.Iterator; +import com.tagtraum.perf.gcviewer.model.*; import org.junit.Test; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; - /** * * Date: Jan 30, 2002 @@ -28,7 +24,7 @@ public void testParse1() throws Exception { AbstractGCEvent event3 = new GCEvent(2, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); AbstractGCEvent event4 = new GCEvent(3, 10753, 6046, 10912, 0.3146707d, AbstractGCEvent.Type.FULL_GC); ByteArrayInputStream in = new ByteArrayInputStream("[GC 8968K->8230K(10912K), 0.0037192 secs]\r\n[GC 8968K->8230K(10[GC 8968K->8230K(10912K), 0.0037192 secs]912K), 0.0037192 secs]\r\n[Full GC 10753K->6046K(10912K), 0.3146707 secs]".getBytes()); - DataReader reader = new DataReaderSun1_3_1(new GCResource("byteArray"), in, GcLogType.SUN1_3_1); + DataReader reader = new DataReaderSun1_3_1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_3_1); GCModel model = reader.read(); assertTrue(model.size() == 4); Iterator> i = model.getStopTheWorldEvents(); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1_19.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1_19.java index 73d32728..dd562938 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1_19.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1_19.java @@ -4,12 +4,12 @@ import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Ignore; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * @@ -26,10 +26,10 @@ public void testCMSPrintGCDetails() throws Exception { String fileName = "SampleSun1_3_1_19SunOS.txt"; final InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_OPENJDK, fileName); - final DataReader reader = new DataReaderSun1_3_1(new GCResource(fileName), in, GcLogType.SUN1_3_1); + final DataReader reader = new DataReaderSun1_3_1(new GcResourceFile(fileName), in, GcLogType.SUN1_3_1); GCModel model = reader.read(); assertEquals("throughput", 95.21, model.getThroughput(), 0.01); } -} \ No newline at end of file +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java index 1aae06d4..e7610e1b 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java @@ -8,13 +8,10 @@ import java.util.Iterator; import java.util.logging.Level; +import com.tagtraum.perf.gcviewer.model.*; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * Tests some cases for java 1.4 (using DataReaderSun1_6_0). @@ -35,7 +32,7 @@ private InputStream getInputStream(String fileName) throws IOException { public void testAdaptiveSizePolicy() throws Exception { String fileName = "SampleSun1_4_0AdaptiveSizePolicy.txt"; InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_4); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_4); GCModel model = reader.read(); assertEquals("number of events", 9, model.getPause().getN()); @@ -58,7 +55,7 @@ public void testParse1() throws Exception { AbstractGCEvent event5 = new GCEvent(4, 10753, 6046, 10912, 0.3146707d, AbstractGCEvent.Type.INC_GC); AbstractGCEvent event6 = new GCEvent(5, 52471, 22991, 75776, 1.0754938d, AbstractGCEvent.Type.GC); ByteArrayInputStream in = new ByteArrayInputStream("0.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n1.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n2.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n3.0: [Full GC 10753K->6046K(10912K), 0.3146707 secs]\r\n4.0: [Inc GC 10753K->6046K(10912K), 0.3146707 secs]\r\n5.0: [GC Desired survivor size 3342336 bytes, new threshold 1 (max 32) - age 1: 6684672 bytes, 6684672 total 52471K->22991K(75776K), 1.0754938 secs]".getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_4); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_4); GCModel model = reader.read(); assertEquals("model size", 6, model.size()); Iterator> i = model.getStopTheWorldEvents(); @@ -83,7 +80,7 @@ public void testParse1() throws Exception { public void testNoFullGC() throws Exception { String fileName = "SampleSun1_4_2NoFullGC.txt"; InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_4); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_4); GCModel model = reader.read(); // we just look at the first six... /* @@ -123,7 +120,7 @@ public void testNoFullGC() throws Exception { public void testPrintGCDetails() throws Exception { String fileName = "SampleSun1_4_2PrintGCDetails.txt"; InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_4); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_4); GCModel model = reader.read(); /* 0.000: [GC 0.000: [DefNew: 1534K->128K(1664K), 0.0082759 secs] 1534K->276K(16256K), 0.0084272 secs] @@ -159,7 +156,7 @@ public void testPrintGCDetails() throws Exception { public void testPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_4_0PSPrintHeapAtGC.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_4_0PSPrintHeapAtGC.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_5_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_5_0.java index 9fbbd9cb..254ebe2f 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_5_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_5_0.java @@ -6,11 +6,11 @@ import java.io.IOException; import java.io.InputStream; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * Tests some cases for java 1.5 (using DataReaderSun1_6_0). @@ -32,7 +32,7 @@ private InputStream getInputStream(String fileName) throws IOException { public void testAdaptiveSizePolicy() throws Exception { String fileName = "SampleSun1_5_0AdaptiveSizePolicy.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("number of events", 6, model.getPause().getN()); @@ -47,7 +47,7 @@ public void testAdaptiveSizePolicy() throws Exception { public void testCMSPrintGCDetails() throws Exception { String fileName = "SampleSun1_5_0CMS_PrintGCDetails.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("size", 515, model.size()); @@ -61,7 +61,7 @@ public void testCMSPrintGCDetails() throws Exception { public void testParallelOldGC() throws Exception { String fileName = "SampleSun1_5_0ParallelOldGC.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("size", 1, model.size()); @@ -72,7 +72,7 @@ public void testParallelOldGC() throws Exception { public void testCMSIncrementalPacing() throws Exception { String fileName = "SampleSun1_5_0CMS_IncrementalPacing.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("size", 810, model.size()); @@ -86,7 +86,7 @@ public void testCMSIncrementalPacing() throws Exception { public void testPromotionFailure() throws Exception { String fileName = "SampleSun1_5_0PromotionFailure.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("size", 6, model.size()); @@ -98,7 +98,7 @@ public void testPromotionFailure() throws Exception { public void testCMSConcurrentModeFailure() throws Exception { String fileName = "SampleSun1_5_0ConcurrentModeFailure.txt"; final InputStream in = getInputStream(fileName); - final DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("size", 3417, model.size()); @@ -114,7 +114,7 @@ public void testCmsScavengeBeforeRemark() throws Exception { "\n0.902: [Rescan (parallel) , 0.0310561 secs]0.933: [weak refs processing, 0.0000152 secs] [1 CMS-remark: 374455K(507904K)] 374455K(524224K), 0.0624207 secs]") .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_5); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_5); GCModel model = reader.read(); assertEquals("gc count", 2, model.size()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java index 34c5dea7..95dadfea 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0.java @@ -1,6 +1,7 @@ package com.tagtraum.perf.gcviewer.imp; import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.model.GCEvent; import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; @@ -31,7 +32,7 @@ public void testPrintGCDateStamps() throws Exception { ("2011-10-05T04:23:39.427+0200: 19.845: [GC 19.845: [ParNew: 93184K->5483K(104832K), 0.0384413 secs] 93184K->5483K(1036928K), 0.0388082 secs] [Times: user=0.41 sys=0.06, real=0.04 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertTrue("hasDateStamp", model.hasDateStamp()); @@ -47,7 +48,7 @@ public void testCMSPromotionFailed() throws Exception { ("2011-10-05T16:05:55.964+0200: 41985.374: [GC 41985.375: [ParNew (promotion failed): 104960K->100764K(104960K), 0.3379238 secs]41985.713: [CMS: 1239589K->897516K(1398144K), 38.3189415 secs] 1336713K->897516K(1503104K), [CMS Perm : 55043K->53511K(91736K)], 38.6583674 secs] [Times: user=39.22 sys=0.06, real=38.66 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("gc pause", 38.6583674, model.getFullGCPause().getSum(), 0.000001); @@ -59,7 +60,7 @@ public void testCMSPromotionFailedPrintPromotionFailure() throws Exception { ("2012-03-26T21:46:32.546+0200: 2.204: [GC 2.204: [ParNew (0: promotion failure size = 4098) (1: promotion failure size = 4098) (2: promotion failure size = 4098) (3: promotion failure size = 4098) (promotion failed): 39277K->39255K(39296K), 0.0175749 secs]2.221: [CMS: 87276K->43438K(87424K), 0.0276222 secs] 95765K->43438K(126720K), [CMS Perm : 2612K->2612K(21248K)], 0.0453577 secs] [Times: user=0.08 sys=0.00, real=0.05 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("gc type", "GC; ParNew (promotion failed); CMS; CMS Perm", model.getFullGCEvents().next().getTypeAsString()); @@ -72,7 +73,7 @@ public void testCMSConcurrentModeFailureDate() throws Exception { ("2011-10-05T15:53:24.119+0200: 41403.025: [GC 41403.025: [ParNew (promotion failed): 104960K->101572K(104960K), 0.3275017 secs]41403.353: [CMS2011-10-05T15:53:24.629+0200: 41403.534: [CMS-concurrent-abortable-preclean: 1.992/2.650 secs] [Times: user=4.40 sys=0.06, real=2.65 secs]" + "\n (concurrent mode failure): 1295417K->906090K(1398144K), 32.4123146 secs] 1395643K->906090K(1503104K), [CMS Perm : 54986K->53517K(91576K)], 32.7410609 secs] [Times: user=33.10 sys=0.05, real=32.74 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -87,7 +88,7 @@ public void testCMSConcurrentModeFailure() throws Exception { "\n (concurrent mode failure): 1143630K->1154547K(1572864K), 40.1744087 secs] 1590086K->1154547K(2044736K), [CMS Perm : 65802K->63368K(109784K)], 41.0904457 secs] [Times: user=60.57 sys=0.07, real=41.09 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -102,7 +103,7 @@ public void testCMSConcurrentModeFailureCmsAbortPreclean() throws Exception { "\n (concurrent mode failure): 1301661K->1299268K(1572864K), 43.3433234 secs] 1757009K->1299268K(2044736K), [CMS Perm : 64534K->63216K(110680K)], 53.8487115 secs] [Times: user=54.83 sys=9.22, real=53.85 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -116,7 +117,7 @@ public void testCMSFullGcCmsInterrupted() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( "78.579: [Full GC (System) 78.579: [CMS (concurrent mode interrupted): 64171K->1538K(107776K), 0.0088356 secs] 75362K->1538K(126912K), [CMS Perm : 2554K->2554K(21248K)], 0.0089351 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("count", 1, model.getPause().getN()); @@ -129,7 +130,7 @@ public void testCMSAbortingPrecleanTimestamp() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( " CMS: abort preclean due to time 12467.886: [CMS-concurrent-abortable-preclean: 5.300/5.338 secs] [Times: user=10.70 sys=0.13, real=5.34 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -142,7 +143,7 @@ public void testCMSAbortingPrecleanDatestamp() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( " CMS: abort preclean due to time 2011-10-07T08:10:25.312+0200: 13454.979: [CMS-concurrent-abortable-preclean: 3.849/5.012 secs] [Times: user=5.58 sys=0.08, real=5.01 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -156,7 +157,7 @@ public void testFullGcIncrementalTimestamp() throws Exception { ("42927.215: [Full GC 42927.215: [CMS42927.255: [CMS-concurrent-sweep: 0.416/6.288 secs] [Times: user=17.38 sys=0.44, real=6.29 secs]" + "\n (concurrent mode failure): 262166K->215967K(785256K), 7.8308614 secs] 273998K->215967K(800040K), [CMS Perm : 523009K->155678K(524288K)] icms_dc=8 , 7.8320634 secs] [Times: user=4.59 sys=0.04, real=7.83 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -169,7 +170,7 @@ public void testFullGcIncrementalTimestamp2() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("44189.823: [Full GC 44189.824: [CMS: 274825K->223922K(892264K), 8.0594203 secs] 327565K->223922K(992616K), [CMS Perm : 524287K->158591K(524288K)] icms_dc=0 , 8.0600619 secs] [Times: user=4.51 sys=0.05, real=8.06 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -182,7 +183,7 @@ public void testCmsRemarkDatestamp() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("2011-10-05T04:23:39.427+0200: 13455.879: [GC[YG occupancy: 325751 K (471872 K)]13455.879: [Rescan (parallel) , 1.0591220 secs]13456.939: [weak refs processing, 0.0794109 secs] [1 CMS-remark: 1023653K(1572864K)] 1349404K(2044736K), 1.1490033 secs] [Times: user=19.09 sys=0.26, real=1.15 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -195,7 +196,7 @@ public void testCmsRemarkTimestamp() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("13455.879: [GC[YG occupancy: 325751 K (471872 K)]13455.879: [Rescan (parallel) , 1.0591220 secs]13456.939: [weak refs processing, 0.0794109 secs] [1 CMS-remark: 1023653K(1572864K)] 1349404K(2044736K), 1.1490033 secs] [Times: user=19.09 sys=0.26, real=1.15 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -208,7 +209,7 @@ public void testCmsRemarkSerial() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("0.778: [GC[YG occupancy: 2179 K (19136 K)]0.778: [Rescan (non-parallel) 0.778: [grey object rescan, 0.0014243 secs]0.780: [root rescan, 0.0000909 secs], 0.0015484 secs]0.780: [weak refs processing, 0.0000066 secs] [1 CMS-remark: 444198K(444416K)] 446377K(463552K), 0.0015882 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -222,7 +223,7 @@ public void testFullGcIncrementalDatestamp() throws Exception { ("2011-10-05T04:23:39.427+0200: 42927.215: [Full GC 42927.215: [CMS2011-10-05T04:23:39.427+0200: 42927.255: [CMS-concurrent-sweep: 0.416/6.288 secs] [Times: user=17.38 sys=0.44, real=6.29 secs]" + "\n (concurrent mode failure): 262166K->215967K(785256K), 7.8308614 secs] 273998K->215967K(800040K), [CMS Perm : 523009K->155678K(524288K)] icms_dc=8 , 7.8320634 secs] [Times: user=4.59 sys=0.04, real=7.83 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -235,7 +236,7 @@ public void testFullGcIncrementalDatestamp2() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("2011-10-05T04:23:39.427+0200: 44189.823: [Full GC 44189.824: [CMS: 274825K->223922K(892264K), 8.0594203 secs] 327565K->223922K(992616K), [CMS Perm : 524287K->158591K(524288K)] icms_dc=0 , 8.0600619 secs] [Times: user=4.51 sys=0.05, real=8.06 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -250,7 +251,7 @@ public void testMixedLineTimestamp() throws Exception { ("36628.590: [GC 36628.591: [ParNew36628.625: [CMS-concurrent-abortable-preclean: 0.128/0.873 secs] [Times: user=2.52 sys=0.02, real=0.87 secs]" + "\n: 14780K->1041K(14784K), 0.0417590 secs] 304001K->295707K(721240K) icms_dc=56 , 0.0419761 secs] [Times: user=0.81 sys=0.01, real=0.04 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -264,7 +265,7 @@ public void testFullGcSystem() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("164.078: [Full GC (System) 164.078: [Tenured: 107024K->86010K(349568K), 0.7964528 secs] 143983K->86010K(506816K), [Perm : 85883K->85855K(86016K)], 0.7965714 secs] [Times: user=0.84 sys=0.00, real=0.80 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -278,7 +279,7 @@ public void testCmsConcurrentMarkStart() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("2011-10-24T08:12:24.375+0200: 3388.929: [CMS-concurrent-mark-start]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -292,7 +293,7 @@ public void testCmsInitiatingOccupancyFraction() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("12460.657: [GC [1 CMS-initial-mark: 789976K(1572864K)] 838178K(2044736K), 0.3114519 secs] [Times: user=0.32 sys=0.00, real=0.31 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -310,7 +311,7 @@ public void testMixedLineWithEmptyLine() throws Exception { "\n- age 1: 1058016 bytes, 1058016 total" + "\n: 13056K->1408K(13056K), 0.0128277 secs] 131480K->122757K(141328K), 0.0131346 secs] [Times: user=0.15 sys=0.00, real=0.01 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -327,7 +328,7 @@ public void testPrintTenuringDistribution() throws Exception { "\n- age 1: 8317928 bytes, 8317928 total" + "\n: 92938K->8649K(104832K), 0.0527364 secs] 410416K->326127K(1036928K), 0.0533874 secs] [Times: user=0.46 sys=0.09, real=0.05 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -346,7 +347,7 @@ public void testPrintTenuringDistributionPromotionFailed() throws Exception { "\n- age 2: 342056 bytes, 1045616 total" + "\n : 9321K->9398K(9792K), 0.0563031 secs]31533.928: [CMS: 724470K->317478K(931248K), 13.5375713 secs] 733688K->317478K(941040K), [CMS Perm : 51870K->50724K(86384K)], 13.5959700 secs] [Times: user=14.03 sys=0.03, real=13.60 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -364,7 +365,7 @@ public void testPrintTenuringDistributionPromotionFailedConcurrentModeFailure() "\n: 9768K->9877K(10240K), 0.0453585 secs]27401.808: [CMS2011-04-18T12:01:20.261+0200: 27407.340: [CMS-concurrent-sweep: 5.738/5.787 secs] [Times: user=6.40 sys=0.02, real=5.79 secs]" + "\n (concurrent mode failure): 858756K->670276K(932096K), 31.5781426 secs] 868036K->670276K(942336K), [CMS Perm : 54962K->51858K(91608K)], 31.6248756 secs] [Times: user=31.85 sys=0.03, real=31.63 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -384,7 +385,7 @@ public void testLineMixesPrintTenuringDistribution() throws Exception { "\n [Times: user=0.59 sys=0.01, real=0.35 secs]" + "\n: 9405K->84K(10368K), 0.0064674 secs] 151062K->141740K(164296K), 0.0067202 secs] [Times: user=0.11 sys=0.01, real=0.01 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -396,7 +397,7 @@ public void testLineMixesPrintTenuringDistribution() throws Exception { public void testCmsMemory() throws Exception { String fileName = "SampleSun1_6_0CMS.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 41, model.size()); @@ -431,7 +432,7 @@ public void testPrintCmsStatistics() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("0.521: [GC[YG occupancy: 2234 K (14784 K)]0.522: [Rescan (parallel) (Survivor:0chunks) Finished young gen rescan work in 1th thread: 0.000 sec") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 0, model.size()); @@ -441,7 +442,7 @@ public void testPrintCmsStatistics() throws Exception { public void testPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0PrintHeapAtGC.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0PrintHeapAtGC.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -464,7 +465,7 @@ public void testAdaptiveSizePolicy() throws Exception { String fileName = "SampleSun1_6_0AdaptiveSizePolicy.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0(new GCResource(fileName), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 10, model.size()); @@ -483,7 +484,7 @@ public void testAdaptiveSizePolicyFullSystemGc() throws Exception { "\n[PSYoungGen: 480K->0K(270976K)] [PSOldGen: 89711K->671K(145536K)] 90191K->671K(416512K) [PSPermGen: 2614K->2614K(21248K)], 0.0070749 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -500,7 +501,7 @@ public void testPrintWithoutUseAdaptiveSizePolicy() throws Exception { "2012-09-27T17:03:28.712+0200: 0.222: [GCAdaptiveSizePolicy::compute_survivor_space_size_and_thresh: survived: 2720992 promoted: 13613552 overflow: true [PSYoungGen: 16420K->2657K(19136K)] 16420K->15951K(62848K), 0.0132830 secs] [Times: user=0.00 sys=0.03, real=0.02 secs] " .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -513,7 +514,7 @@ public void testCMSScavengeBeforeRemarkTimeStamp() throws Exception { ("2.036: [GC[YG occupancy: 235954 K (235968 K)]2.036: [GC 2.036: [ParNew: 235954K->30K(235968K), 0.0004961 secs] 317153K->81260K(395712K), 0.0005481 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]" + "\n2.037: [Rescan (parallel) , 0.0002425 secs]2.037: [weak refs processing, 0.0000041 secs]2.037: [class unloading, 0.0000938 secs]2.037: [scrub symbol & string tables, 0.0003138 secs] [1 CMS-remark: 81230K(159744K)] 81260K(395712K), 0.0013653 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -529,7 +530,7 @@ public void testCMSScavengeBeforeRemarkDateStamp() throws Exception { ("2012-03-07T22:19:49.110+0100: 2.479: [GC[YG occupancy: 227872 K (235968 K)]2012-03-07T22:19:49.110+0100: 2.479: [GC 2.479: [ParNew: 227872K->30K(235968K), 0.0005432 secs] 296104K->68322K(395712K), 0.0005809 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]" + "\n2.480: [Rescan (parallel) , 0.0001934 secs]2.480: [weak refs processing, 0.0000061 secs]2.480: [class unloading, 0.0001131 secs]2.480: [scrub symbol & string tables, 0.0003175 secs] [1 CMS-remark: 68292K(159744K)] 68322K(395712K), 0.0013506 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -548,7 +549,7 @@ public void testCMSScavengeBeforeRemarkWithPrintTenuringDistribution() throws Ex "\n: 235952K->30K(235968K), 0.0005641 secs] 317151K->81260K(395712K), 0.0006030 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]" + "\n2.105: [Rescan (parallel) , 0.0002003 secs]2.105: [weak refs processing, 0.0000041 secs]2.105: [class unloading, 0.0000946 secs]2.105: [scrub symbol & string tables, 0.0003146 secs] [1 CMS-remark: 81230K(159744K)] 81260K(395712K), 0.0013199 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), input, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), input, GcLogType.SUN1_6); GCModel gcModel = reader.read(); assertEquals("GC count", 2, gcModel.size()); @@ -565,7 +566,7 @@ public void testPSWithoutPrintTimeStamp() throws Exception { "\n2012-04-03T20:35:40.056+0200: [GC [PSYoungGen: 19084K->2657K(35584K)] 32314K->32279K(79296K), 0.0236295 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]" + "\n2012-04-03T20:35:40.079+0200: [Full GC [PSYoungGen: 2657K->0K(35584K)] [PSOldGen: 29622K->32262K(67392K)] 32279K->32262K(102976K) [PSPermGen: 2603K->2603K(21248K)], 0.0095147 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 3, model.size()); @@ -580,7 +581,7 @@ public void testCMSWithoutPrintTimeStamp() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( ("2012-04-03T20:36:35.035+0200: [GC [ParNew: 16993K->2105K(19136K), 0.0270541 secs] 16993K->16424K(83008K), 0.0272020 secs] [Times: user=0.02 sys=0.05, real=0.03 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -594,7 +595,7 @@ public void testCMSWithoutPrintTimeStampConcurrentModeFailure() throws Exception ("2012-04-03T20:36:35.284+0200: [GC [ParNew: 19081K->19081K(19136K), 0.0000205 secs][CMS2012-04-03T20:36:35.285+0200: [CMS-concurrent-abortable-preclean: 0.005/0.150 secs] [Times: user=0.14 sys=0.14, real=0.15 secs]" + "\n (concurrent mode failure): 98182K->3832K(98624K), 0.0195864 secs] 117264K->3832K(117760K), [CMS Perm : 2614K->2613K(21248K)], 0.0199322 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -612,7 +613,7 @@ public void testPSPrintTenuringDistribution() throws Exception { + "\nDesired survivor size 89456640 bytes, new threshold 7 (max 15)" + "\n [PSYoungGen: 524288K->35633K(611648K)] 524288K->35633K(2009792K), 0.0240717 secs] [Times: user=0.01 sys=0.03, real=0.02 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -624,7 +625,7 @@ public void testPSPrintTenuringDistribution() throws Exception { public void testCMSAdaptiveSizePolicy() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0CMSAdaptiveSizePolicy.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0CMSAdaptiveSizePolicy.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -643,7 +644,7 @@ public void testCMSAdaptiveSizePolicy() throws Exception { public void testCMSAdaptiveSizePolicyPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -671,7 +672,7 @@ public void testPrintCmsStatisticsConcurrentMark() throws Exception { + "\n [Times: user=0.03 sys=0.00, real=0.01 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -685,7 +686,7 @@ public void testPrintCmsStatisticsConcurrentPreclean() throws Exception { + "\n [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -700,7 +701,7 @@ public void testPrintCmsStatisticsConcurrentModeFailure() throws Exception { + "\n (concurrent mode failure): 402265K->61915K(436928K), 0.0394420 secs] 480896K->61915K(515584K), [CMS Perm : 2626K->2625K(65536K)], 0.0395686 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -731,7 +732,7 @@ public void testPrintCmsStatisticsRemark() throws Exception { ) .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -765,7 +766,7 @@ public void testPrintCmsStatisticsScavengeBeforeRemark() throws Exception { ) .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -785,7 +786,7 @@ public void testPrintCmsStatisticsParNewBeforeRemark() throws Exception { + "\n: 78624K->8686K(78656K), 0.0203494 secs] 424271K->384820K(515584K), 0.0204543 secs] [Times: user=0.13 sys=0.00, real=0.03 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -801,7 +802,7 @@ public void testPrintCmsStatisticsParNewBeforeRemark2() throws Exception { + "\n [Times: user=0.61 sys=0.06, real=0.39 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 2, model.size()); @@ -815,7 +816,7 @@ public void testCommaInTimestamp() throws Exception { "12,655: [GC [PSYoungGen: 262656K->28075K(306432K)] 262656K->28075K(1006848K), 0,3541657 secs] [Times: user=0,22 sys=0,48, real=0,35 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -834,7 +835,7 @@ public void testDerivedGenerationValues() throws Exception { "10.675: [GC [PSYoungGen: 21051K->4947K(22656K)] 23342K->7238K(67712K), 0.0191817 secs] [Times: user=0.09 sys=0.01, real=0.02 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -850,7 +851,7 @@ public void testPrintTenuringDistributionOpenJdk6() throws Exception { "3.141: [GCDesired survivor size 134217728 bytes, new threshold 7 (max 2) [PSYoungGen: 188744K->13345K(917504K)] 188744K->13345K(4063232K), 0.0285820 secs] [Times: user=0.06 sys=0.01, real=0.03 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -864,7 +865,7 @@ public void testPromotionFailedWithReference() throws Exception { "2013-09-02T18:22:23.195+0000: 1837.498: [GC1837.600: [SoftReference, 0 refs, 0.0000060 secs]1837.600: [WeakReference, 374 refs, 0.0000550 secs]1837.600: [FinalReference, 347 refs, 0.0002090 secs]1837.600: [PhantomReference, 0 refs, 0.0000020 secs]1837.600: [JNI Weak Reference, 0.0000050 secs]-- [PSYoungGen: 1330796K->1330796K(1403264K)] 4172533K->4251241K(4323712K), 0.6580190 secs] [Times: user=2.35 sys=0.02, real=0.66 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -876,7 +877,7 @@ public void testPromotionFailedWithReference() throws Exception { public void testCmsGcLocker() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -900,7 +901,7 @@ public void testCmsGcLocker() throws Exception { public void cmsConcurrentModeFailureWithComma() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -921,7 +922,7 @@ public void cmsConcurrentModeFailureWithComma() throws Exception { public void logfileRollingProducesNoWarnings() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0RollingLogfile.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0RollingLogfile.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java index 914bd861..eecc1132 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_6_0G1.java @@ -2,6 +2,7 @@ import com.tagtraum.perf.gcviewer.UnittestHelper; import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; import org.junit.Test; @@ -32,7 +33,7 @@ private InputStream getInputStream(String fileName) throws IOException { public void testG1GcVerbose() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0G1_gc_verbose.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0G1_gc_verbose.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -65,7 +66,7 @@ public void testSimpleEventDateStamp() throws Exception { ("2012-02-29T13:41:00.721+0100: 0.163: [GC pause (young) 4096K->3936K(16M), 0.0032067 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -81,7 +82,7 @@ public void testG1FullGcSystemGc() throws Exception { ("9.978: [Full GC (System.gc()) 597M->1142K(7168K), 0.1604955 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -96,7 +97,7 @@ public void testG1MixedLine1() throws Exception { "\n, 0.0013065 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 2, model.size()); @@ -110,7 +111,7 @@ public void testG1MixedLine2() throws Exception { "\n[GC concurrent-mark-start]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 2, model.size()); @@ -123,7 +124,7 @@ public void testDetailedYoungCollection() throws Exception { // parse one detailed event String fileName = "SampleSun1_6_0G1_Detailed-young.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("number of pauses", 1, model.getPause().getN()); @@ -138,7 +139,7 @@ public void testDetailedCollectionMixed1() throws Exception { // , 0.00831998 secs] String fileName = "SampleSun1_6_0G1_Detailed-mixedLine1.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 2, model.size()); @@ -154,7 +155,7 @@ public void testDetailedCollectionMixed2() throws Exception { // [GC concurrent-mark-start] String fileName = "SampleSun1_6_0G1_Detailed-mixedLine2.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 2, model.size()); @@ -170,7 +171,7 @@ public void testDetailedCollectionMixed3() throws Exception { // : [GC concurrent-mark-start] String fileName = "SampleSun1_6_0G1_Detailed-mixedLine3.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 2, model.size()); @@ -184,7 +185,7 @@ public void testFullGcMixed() throws Exception { InputStream in = new ByteArrayInputStream(("107.222: [Full GC107.248: [GC concurrent-mark-end, 0.0437048 sec]" + "\n 254M->59M(199M), 0.0687356 secs]" + "\n [Times: user=0.06 sys=0.02, real=0.07 secs]").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("number of events", 2, model.size()); @@ -197,7 +198,7 @@ public void testYoungToSpaceOverflow() throws Exception { // special type of GC: 0.838: "[GC pause (young) (to-space overflow)..." String fileName = "SampleSun1_6_0G1_young_toSpaceOverflow.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 1, model.size()); @@ -212,7 +213,7 @@ public void testPartialToSpaceOverflow() throws Exception { // special type of GC: 0.838: "[GC pause (partial) (to-space overflow)..." String fileName = "SampleSun1_6_0G1_partial_toSpaceOverflow.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 1, model.size()); @@ -227,7 +228,7 @@ public void testYoungToSpaceOverflowInitialMark() throws Exception { // special type of GC: 0.838: "[GC pause (young) (to-space overflow) (initial-mark)..." String fileName = "SampleSun1_6_0G1_young_initialMarkToSpaceOverflow.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 2, model.size()); @@ -243,7 +244,7 @@ public void testPartialToSpaceOverflowInitialMark() throws Exception { // special type of GC: 0.838: "[GC pause (partial) (to-space overflow) (initial-mark)..." String fileName = "SampleSun1_6_0G1_partial_initialMarkToSpaceOverflow.txt"; InputStream in = getInputStream(fileName); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource(fileName), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile(fileName), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("nummber of events", 2, model.size()); @@ -258,7 +259,7 @@ public void testPartialToSpaceOverflowInitialMark() throws Exception { public void testGcPattern() throws Exception { InputStream in = new ByteArrayInputStream(("0.452: [GC concurrent-count-start]").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -270,7 +271,7 @@ public void testGcPattern() throws Exception { public void testGcPausePattern() throws Exception { InputStream in = new ByteArrayInputStream(("0.360: [GC concurrent-count-end, 0.0242674]").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -281,7 +282,7 @@ public void testGcPausePattern() throws Exception { public void testGcMemoryPausePattern() throws Exception { InputStream in = new ByteArrayInputStream(("0.360: [GC cleanup 19M->19M(36M), 0.0007889 secs]").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -296,7 +297,7 @@ public void testInitialMark() throws Exception { ("0.319: [GC pause (young) (initial-mark), 0.00188271 secs]" + "\n [Times: user=0.00 sys=0.00, real=0.00 secs] ").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -309,7 +310,7 @@ public void testInitialMark() throws Exception { public void initialMarkHeapAtGcMixed() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0G1InitialMarkMixed.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0G1InitialMarkMixed.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -333,7 +334,7 @@ public void testRemark() throws Exception { ("0.334: [GC remark, 0.0009506 secs]" + "\n [Times: user=0.00 sys=0.00, real=0.00 secs] ").getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_6G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -346,7 +347,7 @@ public void testRemark() throws Exception { public void testPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0G1_PrintHeapAtGC.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0G1_PrintHeapAtGC.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -363,7 +364,7 @@ public void testPrintHeapAtGC() throws Exception { public void testMarkStackFull() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0G1_MarkStackFull.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0G1_MarkStackFull.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -381,7 +382,7 @@ public void testMarkStackFull() throws Exception { public void printHeapAtGcPrintTenuringDistributionFullGc() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_6_0G1FullGcTenuringDistribution.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_6_0G1FullGcTenuringDistribution.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); @@ -399,7 +400,7 @@ public void printHeapAtGcPrintTenuringDistributionFullGc() throws Exception { public void logfileRollingProducesNoWarnings() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0RollingLogfile.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0RollingLogfile.txt"); gcResource.getLogger().addHandler(handler); InputStream in = getInputStream(gcResource.getResourceName()); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0.java index b4cd172e..732a8454 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0.java @@ -12,12 +12,10 @@ import java.time.format.DateTimeFormatter; import java.util.Iterator; import java.util.logging.Level; + +import com.tagtraum.perf.gcviewer.model.*; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; /** * Tests for logs generated specifically by jdk 1.7.0. @@ -42,7 +40,7 @@ public void testPrintGCCause() throws Exception { ByteArrayInputStream in = new ByteArrayInputStream( "111.080: [GC (Allocation Failure)111.080: [ParNew: 140365K->605K(157248K), 0.0034070 secs] 190158K->50399K(506816K), 0.0035370 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -60,7 +58,7 @@ public void testAdaptiveSizePolicyPrintGCCause() throws Exception { + "\nAdaptiveSizeStop: collection: 1" + "\n[PSYoungGen: 16430K->2657K(19136K)] 16430K->15759K(62848K), 0.0109373 secs] [Times: user=0.05 sys=0.02, real=0.02 secs]" ).getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -79,7 +77,7 @@ public void testPrintWithoutUseAdaptiveSizePolicy() throws Exception { "2013-09-13T17:05:22.809+0200: 0.191: [GC (Allocation Failure) AdaptiveSizePolicy::compute_survivor_space_size_and_thresh: survived: 2720928 promoted: 13416848 overflow: true[PSYoungGen: 16430K->2657K(19136K)] 16430K->15759K(62848K), 0.0115757 secs] [Times: user=0.05 sys=0.06, real=0.02 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -96,7 +94,7 @@ public void testPrintWithoutUseAdaptiveSizePolicyFullGc() throws Exception { "2013-09-13T17:05:22.879+0200: 0.256: [Full GC (Ergonomics) [PSYoungGen: 16438K->16424K(19136K)] [ParOldGen: 43690K->43690K(43712K)] 60128K->60114K(62848K), [Metaspace: 2595K->4490K(110592K)], 0.0087315 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -109,7 +107,7 @@ public void cmsRemarkWithTimestamps() throws Exception { "2013-09-11T23:03:44.987+0200: 1518.733: [GC[YG occupancy: 3247177 K (4718592 K)]2013-09-11T23:03:45.231+0200: 1518.977: [Rescan (parallel) , 0.0941360 secs]2013-09-11T23:03:45.325+0200: 1519.071: [weak refs processing, 0.0006010 secs]2013-09-11T23:03:45.325+0200: 1519.071: [scrub string table, 0.0028480 secs] [1 CMS-remark: 4246484K(8388608K)] 4557930K(13107200K), 0.3410220 secs] [Times: user=2.48 sys=0.01, real=0.34 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -123,7 +121,7 @@ public void cmsWithoutTimestamps() throws Exception { "2013-12-19T17:52:49.323+0100: [GC2013-12-19T17:52:49.323+0100: [ParNew: 4872K->480K(4928K), 0.0031563 secs] 102791K->102785K(140892K), 0.0032042 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_6); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_6); GCModel model = reader.read(); assertEquals("GC count", 1, model.size()); @@ -138,7 +136,7 @@ public void cmsWithoutTimestamps() throws Exception { public void parallelPrintUseAdaptiveSizeReference() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0ParallelAdaptiveSizeReference.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0ParallelAdaptiveSizeReference.txt"); gcResource.getLogger().addHandler(handler); final InputStream in = getInputStream(gcResource.getResourceName()); @@ -162,7 +160,7 @@ public void parallelAdaptiveReference() throws Exception { "2013-10-13T09:54:00.664+0200: 0.180: [GC (Allocation Failure)2013-10-13T09:54:00.680+0200: 0.191: [SoftReference, 0 refs, 0.0001032 secs]2013-10-13T09:54:00.680+0200: 0.192: [WeakReference, 5 refs, 0.0000311 secs]2013-10-13T09:54:00.680+0200: 0.192: [FinalReference, 10 refs, 0.0000389 secs]2013-10-13T09:54:00.680+0200: 0.192: [PhantomReference, 0 refs, 0.0000283 secs]2013-10-13T09:54:00.680+0200: 0.192: [JNI Weak Reference, 0.0000340 secs]AdaptiveSizePolicy::compute_survivor_space_size_and_thresh: survived: 2589792 promoted: 13949568 overflow: true [PSYoungGen: 16865K->2529K(19456K)] 16865K->16151K(62976K), 0.0117505 secs] [Times: user=0.00 sys=0.06, real=0.02 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_7); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_7); GCModel model = reader.read(); assertThat("GC count", model.size(), is(1)); @@ -179,7 +177,7 @@ public void parallelReference() throws Exception { "2013-10-13T10:32:07.669+0200: 0.182: [GC (Allocation Failure)2013-10-13T10:32:07.685+0200: 0.195: [SoftReference, 0 refs, 0.0001086 secs]2013-10-13T10:32:07.685+0200: 0.195: [WeakReference, 5 refs, 0.0000311 secs]2013-10-13T10:32:07.685+0200: 0.195: [FinalReference, 10 refs, 0.0000377 secs]2013-10-13T10:32:07.685+0200: 0.195: [PhantomReference, 0 refs, 0.0000283 secs]2013-10-13T10:32:07.685+0200: 0.195: [JNI Weak Reference, 0.0000328 secs] [PSYoungGen: 16865K->2529K(19456K)] 16865K->16151K(62976K), 0.0137921 secs] [Times: user=0.03 sys=0.02, real=0.02 secs]" .getBytes()); - final DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_7); + final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_7); GCModel model = reader.read(); assertThat("GC count", model.size(), is(1)); @@ -193,7 +191,7 @@ public void serialPrintReferenceGC() throws Exception { "2013-10-13T09:52:30.164+0200: 0.189: [GC (Allocation Failure)2013-10-13T09:52:30.164+0200: 0.189: [DefNew2013-10-13T09:52:30.180+0200: 0.205: [SoftReference, 0 refs, 0.0001004 secs]2013-10-13T09:52:30.180+0200: 0.205: [WeakReference, 0 refs, 0.0000287 secs]2013-10-13T09:52:30.180+0200: 0.205: [FinalReference, 0 refs, 0.0000283 secs]2013-10-13T09:52:30.180+0200: 0.205: [PhantomReference, 0 refs, 0.0000279 secs]2013-10-13T09:52:30.180+0200: 0.205: [JNI Weak Reference, 0.0000332 secs]: 17472K->2176K(19648K), 0.0159181 secs] 17472K->16957K(63360K), 0.0161033 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]" .getBytes()); - DataReader reader = new DataReaderSun1_6_0(new GCResource("byteArray"), in, GcLogType.SUN1_7); + DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_7); GCModel model = reader.read(); assertThat("GC count", model.size(), is(1)); @@ -207,7 +205,7 @@ public void serialPrintReferenceGC() throws Exception { public void printCMSInitiationStatistics() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -243,7 +241,7 @@ public void printCMSInitiationStatistics() throws Exception { public void printTenuringDistributionCMSInitiationStatistics() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0CMSTenuringDistributionInitiationStatistics.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0CMSTenuringDistributionInitiationStatistics.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -260,7 +258,7 @@ public void printTenuringDistributionCMSInitiationStatistics() throws Exception public void parallelPrintGCApplicationStoppedTime() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -293,7 +291,7 @@ public void parallelPrintGCApplicationStoppedTime() throws Exception { public void parallelPrintTenuringGcCause() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0Parallel_Tenuring_PrintGCCause.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0Parallel_Tenuring_PrintGCCause.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -310,7 +308,7 @@ public void parallelPrintTenuringGcCause() throws Exception { public void cmsPrintGCApplicationStopped() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_51_CMS_PrintApplStoppedTime.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_51_CMS_PrintApplStoppedTime.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -334,7 +332,7 @@ public void cmsPrintGCApplicationStopped() throws Exception { public void cmsPrintGCApplicationStoppedTimeTenuringDist() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_51_CMS_PrintApplStoppedTime_TenuringDist.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_51_CMS_PrintApplStoppedTime_TenuringDist.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -366,7 +364,7 @@ public void cmsPrintGCApplicationStoppedTimeTenuringDist() throws Exception { public void cmsPrintGCApplicationStoppedTimeWithoutTimestampsTenuringDist() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); ByteArrayInputStream in = new ByteArrayInputStream( @@ -397,7 +395,7 @@ public void cmsPrintGCApplicationStoppedTimeWithoutTimestampsTenuringDist() thro public void cmsPrintFlsStatistics1() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0CmsPrintFlsStats1.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0CmsPrintFlsStats1.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -416,7 +414,7 @@ public void cmsPrintFlsStatistics1() throws Exception { public void cmsPrintFlsStatistics2() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0CmsPrintFlsStats2.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0CmsPrintFlsStats2.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -438,7 +436,7 @@ public void cmsPrintFlsStatistics2() throws Exception { public void cmsPrintFlsStatistics3() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0CmsPrintFlsStats3.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0CmsPrintFlsStats3.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -455,7 +453,7 @@ public void cmsPrintFlsStatistics3() throws Exception { public void cmsPrintPromotionFailureTenuringDistribution() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0CMS_PrintTenuringDistributionPromotionFailure.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0CMS_PrintTenuringDistributionPromotionFailure.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -470,7 +468,7 @@ public void cmsPrintPromotionFailureTenuringDistribution() throws Exception { public void psAdaptiveSizePolicyTenuringDistributionApplicationStopped() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0PS_Adaptive_Tenuring_AppStopped.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0PS_Adaptive_Tenuring_AppStopped.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0G1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0G1.java index 9b2ca188..1156d7f4 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0G1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_7_0G1.java @@ -1,25 +1,18 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.math.DoubleData; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; +import com.tagtraum.perf.gcviewer.model.*; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.math.DoubleData; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; -import com.tagtraum.perf.gcviewer.model.ConcurrentGCEvent; -import com.tagtraum.perf.gcviewer.model.GCEvent; -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GCResource; -import org.junit.Test; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; public class TestDataReaderSun1_7_0G1 { @@ -28,7 +21,7 @@ private InputStream getInputStream(String fileName) throws IOException { } private DataReader getDataReader(String fileName) throws IOException { - return new DataReaderSun1_6_0G1(new GCResource(fileName), getInputStream(fileName), GcLogType.SUN1_7G1); + return new DataReaderSun1_6_0G1(new GcResourceFile(fileName), getInputStream(fileName), GcLogType.SUN1_7G1); } private DataReader getDataReader(GCResource gcResource) throws IOException { @@ -39,7 +32,7 @@ private DataReader getDataReader(GCResource gcResource) throws IOException { public void youngPause_u1() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0-01_G1_young.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0-01_G1_young.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -57,7 +50,7 @@ public void youngPause_u1() throws Exception { public void youngPause_u2() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0-02_G1_young.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0-02_G1_young.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -88,7 +81,7 @@ public void youngPause_u2() throws Exception { public void youngPauseDateStamp_u2() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_02_G1_young_datestamp.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_02_G1_young_datestamp.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -110,7 +103,7 @@ public void youngPauseDateStamp_u2() throws Exception { public void printAdaptiveSizePolicy() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_12PrintAdaptiveSizePolicy.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_12PrintAdaptiveSizePolicy.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -134,7 +127,7 @@ public void printAdaptiveSizePolicy() throws Exception { public void printGCCause() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_40PrintGCCause.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_40PrintGCCause.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -157,7 +150,7 @@ public void printGCCause() throws Exception { public void printGCCause2() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_40PrintGCCause2.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_40PrintGCCause2.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -192,7 +185,7 @@ public void testDetailedCollectionDatestampMixed2() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_DateStamp_Detailed-mixedLine2.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_DateStamp_Detailed-mixedLine2.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -225,7 +218,7 @@ public void testDetailedCollectionDatestampMixed3() throws Exception { public void applicationStoppedMixedLine() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); InputStream in = new ByteArrayInputStream( @@ -248,7 +241,7 @@ public void applicationStoppedMixedLine() throws Exception { public void applicationTimeMixed() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); InputStream in = new ByteArrayInputStream( @@ -298,7 +291,7 @@ public void gcRemark() throws Exception { "\n [Times: user=0.00 sys=0.00, real=0.00 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_7G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_7G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -312,7 +305,7 @@ public void gcRemarkWithDateTimeStamp() throws Exception { " [Times: user=0.43 sys=0.00, real=0.03 secs] \n") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("byteArray"), in, GcLogType.SUN1_7G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_7G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -323,7 +316,7 @@ public void gcRemarkWithDateTimeStamp() throws Exception { public void printTenuringDistribution() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1TenuringDistribution.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1TenuringDistribution.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -343,7 +336,7 @@ public void printApplicationTimePrintTenuringDistribution() throws Exception { // -XX:+PrintGCApplicationConcurrentTime (output ignored) TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_02PrintApplicationTimeTenuringDistribution.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_02PrintApplicationTimeTenuringDistribution.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -375,7 +368,7 @@ public void simpleLogCleanUpNoMemory() throws Exception { + "\n2013-06-22T18:58:46.002+0200: 1.483: [GC pause (young) 91M->90M(128M), 0.0128787 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("bytearray"), in, GcLogType.SUN1_7G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("bytearray"), in, GcLogType.SUN1_7G1); GCModel model = reader.read(); assertEquals("count", 4, model.size()); @@ -389,7 +382,7 @@ public void simpleLogCleanUpNoMemory() throws Exception { public void printHeapAtGcWithConcurrentEvents() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_PrintHeapAtGC_withConcurrent.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_PrintHeapAtGC_withConcurrent.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -414,7 +407,7 @@ public void printHeapAtGcWithConcurrentEvents() throws Exception { public void printPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_40PrintHeapAtGC.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_40PrintHeapAtGC.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -431,7 +424,7 @@ public void printPrintHeapAtGC() throws Exception { public void printAdaptiveSizePolicyPrintReferencePolicy() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1AdaptiveSize_Reference.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1AdaptiveSize_Reference.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -457,7 +450,7 @@ public void printAdaptiveSizePolicyPrintReferencePolicy() throws Exception { public void printReferencePolicy() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1PrintReferencePolicy.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1PrintReferencePolicy.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -474,7 +467,7 @@ public void printReferencePolicy() throws Exception { public void printDetailsWithoutTimestamp() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_DetailsWoTimestamp.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_DetailsWoTimestamp.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -493,7 +486,7 @@ public void printSimpleToSpaceOverflow() throws Exception { ("2013-12-21T15:48:44.062+0100: 0.441: [GC pause (G1 Evacuation Pause) (young)-- 90M->94M(128M), 0.0245257 secs]") .getBytes()); - DataReader reader = new DataReaderSun1_6_0G1(new GCResource("bytearray"), in, GcLogType.SUN1_7G1); + DataReader reader = new DataReaderSun1_6_0G1(new GcResourceFile("bytearray"), in, GcLogType.SUN1_7G1); GCModel model = reader.read(); assertEquals("count", 1, model.size()); @@ -505,7 +498,7 @@ public void printSimpleToSpaceOverflow() throws Exception { public void pauseWithComma() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_PauseWithComma.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_PauseWithComma.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -527,7 +520,7 @@ public void pauseWithComma() throws Exception { private void verifyYoungToSpaceOverflowInitialMarkMixedOrder(String fileName, Type type) throws IOException { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource(fileName); + GCResource gcResource = new GcResourceFile(fileName); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -558,7 +551,7 @@ public void testYoungToSpaceOverflowInitialMarkReverseOrder() throws Exception { public void printGCApplicationStoppedTimeTenuringDist() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0_51_G1_PrintApplicationTimeTenuringDistribution.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0_51_G1_PrintApplicationTimeTenuringDistribution.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -588,7 +581,7 @@ public void printGCApplicationStoppedTimeTenuringDist() throws Exception { public void printGCApplicationStoppedTimeTenuringDistErgonomicsComma() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_AppStopped_TenuringDist_Ergonomics_comma.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_AppStopped_TenuringDist_Ergonomics_comma.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -618,7 +611,7 @@ public void printGCApplicationStoppedMixed() throws Exception { // TODO relax G1 parser: don't warn, when 2 timestamps are in the beginning of a line TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_7_0G1_MixedApplicationStopped.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_7_0G1_MixedApplicationStopped.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -638,7 +631,7 @@ public void printGCApplicationStoppedMixed() throws Exception { public void printAdaptiveSizePolicyFullGc() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); gcResource.getLogger().addHandler(handler); InputStream in = new ByteArrayInputStream( diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0.java index fa223fd6..a76a7477 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0.java @@ -10,6 +10,7 @@ import java.io.InputStream; import java.util.logging.Level; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.UnittestHelper; @@ -36,7 +37,7 @@ private DataReader getDataReader(GCResource gcResource) throws IOException { public void parallelPrintHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0ParallelPrintHeapAtGC.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0ParallelPrintHeapAtGC.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -51,7 +52,7 @@ public void parallelPrintHeapAtGC() throws Exception { public void scavengeBeforeRemarkPrintHeapAtGC_YGOccupancy() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0CMS_ScavengeBeforeRemark_HeapAtGc.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0CMS_ScavengeBeforeRemark_HeapAtGc.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -68,7 +69,7 @@ public void scavengeBeforeRemarkPrintHeapAtGC_YGOccupancy() throws Exception { public void scavengeBeforeRemark_HeapAtGC_PrintTenuringDistribution_PrintFLSStats() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0CMS_ScavengeBR_HeapAtGC_TenuringDist_PrintFLS.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0CMS_ScavengeBR_HeapAtGC_TenuringDist_PrintFLS.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -85,7 +86,7 @@ public void scavengeBeforeRemark_HeapAtGC_PrintTenuringDistribution_PrintFLSStat public void parallelPrintTenuringGcCause() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0Parallel_Tenuring_PrintGCCause.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0Parallel_Tenuring_PrintGCCause.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -102,7 +103,7 @@ public void parallelPrintTenuringGcCause() throws Exception { public void parallelApple() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0Parallel_Apple.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0Parallel_Apple.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -117,7 +118,7 @@ public void parallelApple() throws Exception { public void cmsPrintHeapBeforeFullGc() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0CMS_HeadDumpBeforeFullGc.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0CMS_HeadDumpBeforeFullGc.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0G1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0G1.java index 193e43c9..943f66fd 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0G1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_8_0G1.java @@ -11,6 +11,7 @@ import java.io.UnsupportedEncodingException; import java.util.logging.Level; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Test; import com.tagtraum.perf.gcviewer.model.GCEvent; @@ -38,7 +39,7 @@ private DataReader getDataReader(GCResource gcResource) throws UnsupportedEncodi public void fullConcurrentCycle() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0G1_ConcurrentCycle.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0G1_ConcurrentCycle.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -62,7 +63,7 @@ public void fullConcurrentCycle() throws Exception { public void fullGcWithDetailedSizes() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("byteArray"); + GCResource gcResource = new GcResourceFile("byteArray"); ByteArrayInputStream in = new ByteArrayInputStream( ("2014-07-24T13:49:45.090+0400: 92457.841: [Full GC (Allocation Failure) 5811M->3097M(12G), 8.9862292 secs]" @@ -88,7 +89,7 @@ public void fullGcWithDetailedSizes() throws Exception { public void printGCCauseTenuringDistribution() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0G1PrintGCCausePrintTenuringDistribution.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0G1PrintGCCausePrintTenuringDistribution.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -103,7 +104,7 @@ public void printGCCauseTenuringDistribution() throws Exception { public void printHeapAtGC() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0G1PrintHeapAtGc.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0G1PrintHeapAtGc.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -118,7 +119,7 @@ public void printHeapAtGC() throws Exception { public void humongousMixed() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0G1HumongousMixed.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0G1HumongousMixed.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); @@ -132,7 +133,7 @@ public void humongousMixed() throws Exception { public void extendedRemark() throws Exception { TestLogHandler handler = new TestLogHandler(); handler.setLevel(Level.WARNING); - GCResource gcResource = new GCResource("SampleSun1_8_0G1extended-remark.txt"); + GCResource gcResource = new GcResourceFile("SampleSun1_8_0G1extended-remark.txt"); gcResource.getLogger().addHandler(handler); DataReader reader = getDataReader(gcResource); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCResource.java b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCResource.java index cd9abf55..7c765aae 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCResource.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCResource.java @@ -1,13 +1,13 @@ package com.tagtraum.perf.gcviewer.model; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; +import org.junit.Test; import java.io.File; import java.io.RandomAccessFile; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; -import org.junit.Test; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; /** * @author Joerg Wuethrich

created on: 19.08.2015

@@ -19,7 +19,7 @@ public void hasUnderlyingResourceChanged() throws Exception { File testFile = File.createTempFile("GCResourceUnittest", ".txt"); try { try (RandomAccessFile file = new RandomAccessFile(testFile, "rws")) { - GCResource resource = new GCResource(testFile.getAbsolutePath()); + GCResource resource = new GcResourceFile(testFile.getAbsolutePath()); assertThat("before", resource.hasUnderlyingResourceChanged(), is(true)); resource.getModel().add(new GCEvent(0.123, 100, 10, 1024, 0.2, Type.PAR_NEW)); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java index 32a6a8f8..86ee870e 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java @@ -1,21 +1,18 @@ package com.tagtraum.perf.gcviewer.view.model; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.endsWith; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.startsWith; - -import java.util.ArrayList; -import java.util.List; - import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; import com.tagtraum.perf.gcviewer.model.GCEvent; import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.Matchers.*; + /** * Test for {@link GCResourceGroup} class. */ @@ -24,10 +21,10 @@ public class TestGCResourceGroup { @Before public void setup() { - GCResource gcResource1 = new GCResource("gcResource1"); + GCResource gcResource1 = new GcResourceFile("gcResource1"); gcResource1.getModel().add(new GCEvent(1.1, 100, 50, 200, 0.003, Type.GC)); - GCResource gcResource2 = new GCResource("gcResource2"); + GCResource gcResource2 = new GcResourceFile("gcResource2"); gcResource2.getModel().add(new GCEvent(1.5, 1000, 400, 2000, 0.044, Type.FULL_GC)); gcResourceList = new ArrayList<>(); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestRecentGCResourcesModel.java b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestRecentGCResourcesModel.java index f26b6f8c..8337e1ad 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestRecentGCResourcesModel.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestRecentGCResourcesModel.java @@ -5,7 +5,7 @@ import java.net.MalformedURLException; import java.util.Arrays; -import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; import org.junit.Assert; import org.junit.Test; @@ -17,7 +17,7 @@ public class TestRecentGCResourcesModel { * Return the missing part of a relative path compared to its absolute path. */ private String getPathExpansion() { - String resourceNameAsUrlString = new GCResource("temp").getResourceNameAsUrlString(); + String resourceNameAsUrlString = new GcResourceFile("temp").getResourceNameAsUrlString(); return resourceNameAsUrlString.substring("file:/".length(), resourceNameAsUrlString.indexOf("temp")); } @@ -37,13 +37,13 @@ public void addString() throws MalformedURLException { @Test public void addList() { RecentGCResourcesModel model = new RecentGCResourcesModel(); - model.add(Arrays.asList(new GCResource("temp/test.log"))); + model.add(Arrays.asList(new GcResourceFile("temp/test.log"))); Assert.assertThat("add first entry", model.getResourceNameGroups().size(), is(1)); - model.add(Arrays.asList(new GCResource("temp/test.log"))); + model.add(Arrays.asList(new GcResourceFile("temp/test.log"))); Assert.assertThat("add identical entry", model.getResourceNameGroups().size(), is(1)); - model.add(Arrays.asList(new GCResource("file:/" + getPathExpansion() + "temp/test.log"))); + model.add(Arrays.asList(new GcResourceFile("file:/" + getPathExpansion() + "temp/test.log"))); Assert.assertThat("add url entry of same file", model.getResourceNameGroups().size(), is(1)); } From 3ac5d97020ed1fa0083a83ca730935f30d45e111 Mon Sep 17 00:00:00 2001 From: "martin.geldmacher" Date: Fri, 29 Apr 2016 19:46:58 +0200 Subject: [PATCH 3/8] Allow to compare GCModels For several model elements a proper #equals & hashcode have been added. This allows to compare GCEvents & GCModels, e.g. in tests. This should however also come in handy in other situations, e.g when storing them in hash based collections --- .../perf/gcviewer/math/DoubleData.java | 37 +++++++++++ .../tagtraum/perf/gcviewer/math/IntData.java | 33 +++++++++- .../perf/gcviewer/math/RegressionLine.java | 36 ++++++++++ .../perf/gcviewer/model/AbstractGCEvent.java | 59 ++++++++--------- .../gcviewer/model/ConcurrentGCEvent.java | 28 +++++++- .../perf/gcviewer/model/G1GcEvent.java | 6 -- .../tagtraum/perf/gcviewer/model/GCEvent.java | 22 ++++++- .../tagtraum/perf/gcviewer/model/GCModel.java | 43 +++++++----- .../gcviewer/imp/TestDataReaderSun1_2_2.java | 12 +++- .../gcviewer/imp/TestDataReaderSun1_3_1.java | 15 +++-- .../gcviewer/imp/TestDataReaderSun1_4_0.java | 66 +++++++++++++------ .../perf/gcviewer/model/TestGCModel.java | 29 +++++++- 12 files changed, 297 insertions(+), 89 deletions(-) diff --git a/src/main/java/com/tagtraum/perf/gcviewer/math/DoubleData.java b/src/main/java/com/tagtraum/perf/gcviewer/math/DoubleData.java index 88ed058d..65db5893 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/math/DoubleData.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/math/DoubleData.java @@ -85,4 +85,41 @@ public static double weightedAverage(double[] n, int[] weight) { } return sum / m; } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + DoubleData that = (DoubleData) o; + + if (n != that.n) + return false; + if (Double.compare(that.sum, sum) != 0) + return false; + if (Double.compare(that.sumSquares, sumSquares) != 0) + return false; + if (Double.compare(that.min, min) != 0) + return false; + return Double.compare(that.max, max) == 0; + + } + + @Override + public int hashCode() { + int result; + long temp; + result = n; + temp = Double.doubleToLongBits(sum); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(sumSquares); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(min); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(max); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + return result; + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/math/IntData.java b/src/main/java/com/tagtraum/perf/gcviewer/math/IntData.java index 2baf33e9..0bced703 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/math/IntData.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/math/IntData.java @@ -15,7 +15,7 @@ public class IntData implements Serializable { private long sum; private long sumSquares; private int min = Integer.MAX_VALUE; - private int max = Integer.MIN_VALUE; + private int max = Integer.MIN_VALUE; public void add(int x) { sum += x; @@ -83,4 +83,35 @@ public static long weightedAverage(long[] n, int[] weight) { } return sum / m; } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + IntData intData = (IntData) o; + + if (n != intData.n) + return false; + if (sum != intData.sum) + return false; + if (sumSquares != intData.sumSquares) + return false; + if (min != intData.min) + return false; + return max == intData.max; + + } + + @Override + public int hashCode() { + int result = n; + result = 31 * result + (int) (sum ^ (sum >>> 32)); + result = 31 * result + (int) (sumSquares ^ (sumSquares >>> 32)); + result = 31 * result + min; + result = 31 * result + max; + return result; + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/math/RegressionLine.java b/src/main/java/com/tagtraum/perf/gcviewer/math/RegressionLine.java index 3b75642b..99a50852 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/math/RegressionLine.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/math/RegressionLine.java @@ -62,4 +62,40 @@ private static double slope(double n, double sumX, double sumY, double sumXY, do return (n * sumXY - sumX * sumY) / (n * sumXSquare - sumX * sumX); } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + RegressionLine that = (RegressionLine) o; + + if (Double.compare(that.sumX, sumX) != 0) + return false; + if (Double.compare(that.sumY, sumY) != 0) + return false; + if (Double.compare(that.sumXSquare, sumXSquare) != 0) + return false; + if (Double.compare(that.sumXY, sumXY) != 0) + return false; + return n == that.n; + + } + + @Override + public int hashCode() { + int result; + long temp; + temp = Double.doubleToLongBits(sumX); + result = (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(sumY); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(sumXSquare); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(sumXY); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + result = 31 * result + n; + return result; + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGCEvent.java b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGCEvent.java index 6c872c28..6e159da6 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGCEvent.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGCEvent.java @@ -2,14 +2,7 @@ import java.io.Serializable; import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; +import java.util.*; /** * The abstract gc event is the base class for all types of events. All sorts of general @@ -19,7 +12,6 @@ * @author Joerg Wuethrich */ public abstract class AbstractGCEvent> implements Serializable { - private final Iterator EMPTY_ITERATOR = Collections.emptyIterator(); private ZonedDateTime datestamp; private double timestamp; private ExtendedType extendedType = ExtendedType.UNDEFINED; @@ -30,7 +22,7 @@ public abstract class AbstractGCEvent> implements S private double pause; public Iterator details() { - if (details == null) return EMPTY_ITERATOR; + if (details == null) return Collections.emptyIterator(); return details.iterator(); } @@ -160,27 +152,7 @@ public void setTenuredDetail(boolean tenuredDetail) { this.tenuredDetail = tenuredDetail; } - // better than nothing hashcode - public int hashCode() { - return toString().hashCode(); - } - - // better than nothing equals - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof AbstractGCEvent)) { - return false; - } - - return toString().equals(obj.toString()); - } - - public String toString() { + public String toString() { StringBuffer sb = new StringBuffer(128); toStringBuffer(sb); return sb.toString(); @@ -248,6 +220,28 @@ public void setPause(double pause) { this.pause = pause; } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof AbstractGCEvent)) + return false; + AbstractGCEvent that = (AbstractGCEvent) o; + return Double.compare(that.timestamp, timestamp) == 0 && + tenuredDetail == that.tenuredDetail && + Double.compare(that.pause, pause) == 0 && + Objects.equals(datestamp, that.datestamp) && + Objects.equals(extendedType, that.extendedType) && + Objects.equals(typeAsString, that.typeAsString) && + generation == that.generation && + Objects.equals(details, that.details); + } + + @Override + public int hashCode() { + return Objects.hash(datestamp, timestamp, extendedType, tenuredDetail, typeAsString, generation, details); + } + /** * Wrapper for the {@link Type} class adding a field for the full type name. That name may * be different from the name in Type. Since all other attributes of @@ -316,8 +310,7 @@ public Concurrency getConcurrency() { public String toString() { return fullName; } - - } + } /** * Representation of an event type diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/ConcurrentGCEvent.java b/src/main/java/com/tagtraum/perf/gcviewer/model/ConcurrentGCEvent.java index 21e0e9b5..c41de583 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/ConcurrentGCEvent.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/ConcurrentGCEvent.java @@ -4,7 +4,7 @@ * ConcurrentGCEvent. * @author Hendrik Schreiber */ -public class ConcurrentGCEvent extends AbstractGCEvent { +public final class ConcurrentGCEvent extends AbstractGCEvent { private double duration; @@ -37,7 +37,7 @@ public boolean hasDuration() { return !getExtendedType().getName().endsWith("-start"); } - public void toStringBuffer(StringBuffer sb) { + public void toStringBuffer(StringBuffer sb) { sb.append(getTimestamp()); sb.append(": ["); sb.append(getExtendedType().getName()); @@ -50,4 +50,28 @@ public void toStringBuffer(StringBuffer sb) { } sb.append(']'); } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + if (!super.equals(o)) + return false; + + ConcurrentGCEvent that = (ConcurrentGCEvent) o; + + return Double.compare(that.duration, duration) == 0; + + } + + @Override + public int hashCode() { + int result = super.hashCode(); + long temp; + temp = Double.doubleToLongBits(duration); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + return result; + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/G1GcEvent.java b/src/main/java/com/tagtraum/perf/gcviewer/model/G1GcEvent.java index 4895ca38..0970292a 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/G1GcEvent.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/G1GcEvent.java @@ -14,10 +14,4 @@ public class G1GcEvent extends GCEvent { public String getTypeAsString() { return getExtendedType().getName(); } - - @Override - public void toStringBuffer(StringBuffer sb) { - super.toStringBuffer(sb); - } - } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCEvent.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCEvent.java index ffd6d1a9..1b5090be 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCEvent.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCEvent.java @@ -1,5 +1,7 @@ package com.tagtraum.perf.gcviewer.model; +import java.util.Objects; + /** * The GCEvent is the type of event that contains memory (preused, postused, total) and * pause information. @@ -143,7 +145,7 @@ public void toStringBuffer(StringBuffer sb) { sb.append(getExtendedType() != null ? getExtendedType().getName() : ExtendedType.UNDEFINED); if (details != null) { sb.append(' '); - for (GCEvent event : details) { + for (AbstractGCEvent event : details) { event.toStringBuffer(sb); } sb.append(' '); @@ -161,4 +163,22 @@ public void toStringBuffer(StringBuffer sb) { sb.append(" secs]"); } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof GCEvent)) + return false; + if (!super.equals(o)) + return false; + GCEvent gcEvent = (GCEvent) o; + return preUsed == gcEvent.preUsed && + postUsed == gcEvent.postUsed && + total == gcEvent.total; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), preUsed, postUsed, total); + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java index 41ab3208..891315d9 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java @@ -1,5 +1,11 @@ package com.tagtraum.perf.gcviewer.model; +import com.tagtraum.perf.gcviewer.math.DoubleData; +import com.tagtraum.perf.gcviewer.math.IntData; +import com.tagtraum.perf.gcviewer.math.RegressionLine; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.CollectionType; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Generation; + import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -8,23 +14,12 @@ import java.net.URL; import java.net.URLConnection; import java.time.Duration; -import java.time.Instant; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; -import com.tagtraum.perf.gcviewer.math.DoubleData; -import com.tagtraum.perf.gcviewer.math.IntData; -import com.tagtraum.perf.gcviewer.math.RegressionLine; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.CollectionType; -import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Generation; - /** * Collection of GCEvents. * @@ -142,7 +137,7 @@ public String toString() { private RegressionLine relativePostFullGCIncrease; private URL url; - public GCModel() { + public GCModel() { this.allEvents = new ArrayList>(); this.stopTheWorldEvents = new ArrayList>(); this.gcEvents = new ArrayList(); @@ -156,6 +151,7 @@ public GCModel() { this.freedMemoryByGC = new IntData(); this.freedMemoryByFullGC = new IntData(); this.postFullGCUsedHeap = new IntData(); + this.postGCUsedMemory = new IntData(); this.totalPause = new DoubleData(); this.fullGCPause = new DoubleData(); @@ -942,7 +938,24 @@ public String toString() { return "GCModel[size=" + size() + "]: " + allEvents.toString(); } - public static class Format implements Serializable { + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GCModel model = (GCModel) o; + return Objects.equals(allEvents, model.allEvents); + } + + @Override + public int hashCode() { + return Objects.hash(allEvents, fileInformation, fullGcEventPauses, gcEventPauses, concurrentGcEventPauses, vmOperationEventPauses, heapAllocatedSizes, tenuredAllocatedSizes, youngAllocatedSizes, permAllocatedSizes, heapUsedSizes, tenuredUsedSizes, youngUsedSizes, permUsedSizes, postConcurrentCycleUsedTenuredSizes, postConcurrentCycleUsedHeapSizes, promotion, firstPauseTimeStamp, lastPauseTimeStamp, totalPause, fullGCPause, lastFullGcPauseTimeStamp, fullGcPauseInterval, gcPause, vmOperationPause, lastGcPauseTimeStamp, pauseInterval, initiatingOccupancyFraction, freedMemory, format, postGCUsedMemory, postFullGCUsedHeap, freedMemoryByGC, freedMemoryByFullGC, postGCSlope, currentPostGCSlope, currentRelativePostGCIncrease, relativePostGCIncrease, postFullGCSlope, relativePostFullGCIncrease, url); + } + + public static class Format implements Serializable { private static final long serialVersionUID = 483615745336894207L; private String format; @@ -959,5 +972,5 @@ public String toString() { public static final Format SUN_X_LOG_GC = new Format("Sun -Xloggc:"); public static final Format IBM_VERBOSE_GC = new Format("IBM -verbose:gc"); public static final Format SUN_1_2_2VERBOSE_GC = new Format("Sun 1.2.2 -verbose:gc"); - } + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java index be3100a7..0edf0ff0 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_2_2.java @@ -1,12 +1,15 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.junit.Assert.assertEquals; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; +import com.tagtraum.perf.gcviewer.model.GCEvent; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.util.Iterator; -import com.tagtraum.perf.gcviewer.model.*; -import org.junit.Test; +import static org.junit.Assert.assertEquals; /** * @@ -19,8 +22,11 @@ public class TestDataReaderSun1_2_2 { @Test public void testParse1() throws Exception { AbstractGCEvent event1 = new GCEvent(0, 817, 187, 819, 0.008, AbstractGCEvent.Type.GC); + event1.getGeneration(); AbstractGCEvent event2 = new GCEvent(0.02, 775, 188, 819, 0.005, AbstractGCEvent.Type.GC); + event2.getGeneration(); AbstractGCEvent event3 = new GCEvent(0.741, 1213, 1213, 1639, 0.0, AbstractGCEvent.Type.GC); + event3.getGeneration(); ByteArrayInputStream in = new ByteArrayInputStream(("\n" + "\n" + " \n" + diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java index 2b7ef760..3f5790d9 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_3_1.java @@ -1,13 +1,16 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; +import com.tagtraum.perf.gcviewer.model.GCEvent; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.util.Iterator; -import com.tagtraum.perf.gcviewer.model.*; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * @@ -20,9 +23,13 @@ public class TestDataReaderSun1_3_1 { @Test public void testParse1() throws Exception { AbstractGCEvent event1 = new GCEvent(0, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event1.getGeneration(); AbstractGCEvent event2 = new GCEvent(1, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event2.getGeneration(); AbstractGCEvent event3 = new GCEvent(2, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event3.getGeneration(); AbstractGCEvent event4 = new GCEvent(3, 10753, 6046, 10912, 0.3146707d, AbstractGCEvent.Type.FULL_GC); + event4.getGeneration(); ByteArrayInputStream in = new ByteArrayInputStream("[GC 8968K->8230K(10912K), 0.0037192 secs]\r\n[GC 8968K->8230K(10[GC 8968K->8230K(10912K), 0.0037192 secs]912K), 0.0037192 secs]\r\n[Full GC 10753K->6046K(10912K), 0.3146707 secs]".getBytes()); DataReader reader = new DataReaderSun1_3_1(new GcResourceFile("byteArray"), in, GcLogType.SUN1_3_1); GCModel model = reader.read(); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java index e7610e1b..bd2b61d5 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderSun1_4_0.java @@ -1,6 +1,8 @@ package com.tagtraum.perf.gcviewer.imp; -import static org.junit.Assert.assertEquals; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.*; +import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -8,10 +10,7 @@ import java.util.Iterator; import java.util.logging.Level; -import com.tagtraum.perf.gcviewer.model.*; -import org.junit.Test; - -import com.tagtraum.perf.gcviewer.UnittestHelper; +import static org.junit.Assert.assertEquals; /** * Tests some cases for java 1.4 (using DataReaderSun1_6_0). @@ -24,9 +23,9 @@ public class TestDataReaderSun1_4_0 { private InputStream getInputStream(String fileName) throws IOException { return UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER_OPENJDK, fileName); } - + /** - * Test output for -XX:+PrintAdaptiveSizePolicy + * Test output for -XX:+PrintAdaptiveSizePolicy */ @Test public void testAdaptiveSizePolicy() throws Exception { @@ -34,7 +33,7 @@ public void testAdaptiveSizePolicy() throws Exception { InputStream in = getInputStream(fileName); final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile(fileName), in, GcLogType.SUN1_4); GCModel model = reader.read(); - + assertEquals("number of events", 9, model.getPause().getN()); assertEquals("number of full gcs", 3, model.getFullGCPause().getN()); assertEquals("number of gcs", 6, model.getGCPause().getN()); @@ -42,18 +41,24 @@ public void testAdaptiveSizePolicy() throws Exception { assertEquals("full gc pause", 0.026889, model.getFullGCPause().getSum(), 0.000001); assertEquals("gc pause", 0.1709856, model.getGCPause().getSum(), 0.000001); } - + @Test public void testParse1() throws Exception { // original testcase was written with timestamp "2.23492e-006d" as first timestamp // I have never seen a timestamp writte in scientific format in the logfiles, so // I assume, that was some experiment here in the unittest AbstractGCEvent event1 = new GCEvent(0, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event1.getGeneration(); AbstractGCEvent event2 = new GCEvent(1, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event2.getGeneration(); AbstractGCEvent event3 = new GCEvent(2, 8968, 8230, 10912, 0.0037192d, AbstractGCEvent.Type.GC); + event3.getGeneration(); AbstractGCEvent event4 = new GCEvent(3, 10753, 6046, 10912, 0.3146707d, AbstractGCEvent.Type.FULL_GC); + event4.getGeneration(); AbstractGCEvent event5 = new GCEvent(4, 10753, 6046, 10912, 0.3146707d, AbstractGCEvent.Type.INC_GC); + event5.getGeneration(); AbstractGCEvent event6 = new GCEvent(5, 52471, 22991, 75776, 1.0754938d, AbstractGCEvent.Type.GC); + event6.getGeneration(); ByteArrayInputStream in = new ByteArrayInputStream("0.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n1.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n2.0: [GC 8968K->8230K(10912K), 0.0037192 secs]\r\n3.0: [Full GC 10753K->6046K(10912K), 0.3146707 secs]\r\n4.0: [Inc GC 10753K->6046K(10912K), 0.3146707 secs]\r\n5.0: [GC Desired survivor size 3342336 bytes, new threshold 1 (max 32) - age 1: 6684672 bytes, 6684672 total 52471K->22991K(75776K), 1.0754938 secs]".getBytes()); final DataReader reader = new DataReaderSun1_6_0(new GcResourceFile("byteArray"), in, GcLogType.SUN1_4); GCModel model = reader.read(); @@ -71,7 +76,7 @@ public void testParse1() throws Exception { assertEquals("event 5", event, event5); event = i.next(); assertEquals("event 6", event, event6); - + assertEquals("running time", 5 + 1.0754938, model.getRunningTime(), 0.0001); assertEquals("throughput", 71.75550076275, model.getThroughput(), 0.0000001); } @@ -92,11 +97,17 @@ public void testNoFullGC() throws Exception { 2.831: [GC 1202K->856K(1984K), 0.0122599 secs] */ AbstractGCEvent event1 = new GCEvent(0.0d, 511, 180, 1984, 0.0095672d, AbstractGCEvent.Type.GC); + event1.getGeneration(); AbstractGCEvent event2 = new GCEvent(0.691d, 433, 233, 1984, 0.0056869d, AbstractGCEvent.Type.GC); + event2.getGeneration(); AbstractGCEvent event3 = new GCEvent(1.030d, 745, 242, 1984, 0.0043429d, AbstractGCEvent.Type.GC); + event3.getGeneration(); AbstractGCEvent event4 = new GCEvent(1.378d, 753, 452, 1984, 0.0094429d, AbstractGCEvent.Type.GC); + event4.getGeneration(); AbstractGCEvent event5 = new GCEvent(2.499d, 964, 690, 1984, 0.0108058d, AbstractGCEvent.Type.GC); + event5.getGeneration(); AbstractGCEvent event6 = new GCEvent(2.831d, 1202, 856, 1984, 0.0122599d, AbstractGCEvent.Type.GC); + event6.getGeneration(); assertEquals("model size", 12, model.size()); Iterator i = model.getGCEvents(); @@ -112,7 +123,7 @@ public void testNoFullGC() throws Exception { assertEquals("event 5", event, event5); event = i.next(); assertEquals("event 6", event, event6); - + assertEquals("throughput", 98.928592417159, model.getThroughput(), 0.00000000001); } @@ -128,15 +139,28 @@ public void testPrintGCDetails() throws Exception { 22.879: [GC 22.879: [DefNew: 1855K->125K(1856K), 0.0099038 secs]22.889: [Tenured: 14638K->9916K(14720K), 0.8038262 secs] 16358K->9916K(16576K), 0.8142078 secs] 31.788: [Full GC 31.788: [Tenured: 16141K->13914K(16528K), 0.8032950 secs] 17881K->13914K(18640K), 0.8036514 secs] */ - AbstractGCEvent event1 = new GCEvent(0.0d, 1534, 276, 16256, 0.0084272d, AbstractGCEvent.Type.GC); - event1.add(new GCEvent(0.0d, 1534, 128, 1664, 0.0082759d, AbstractGCEvent.Type.DEF_NEW)); - AbstractGCEvent event2 = new GCEvent(11.653d, 6560, 5492, 16256, 0.2858561d, AbstractGCEvent.Type.FULL_GC); - event2.add(new GCEvent(11.653d, 5634, 5492, 14592, 0.2856516d, AbstractGCEvent.Type.TENURED)); - AbstractGCEvent event3 = new GCEvent(22.879d, 16358, 9916, 16576, 0.8142078d, AbstractGCEvent.Type.GC); - event3.add(new GCEvent(22.879d, 1855, 125, 1856, 0.0099038d, AbstractGCEvent.Type.DEF_NEW)); - event3.add(new GCEvent(22.889d, 14638, 9916, 14720, 0.8038262d, AbstractGCEvent.Type.TENURED)); - AbstractGCEvent event4 = new GCEvent(31.788d, 17881, 13914, 18640, 0.8036514d, AbstractGCEvent.Type.FULL_GC); - event4.add(new GCEvent(31.788d, 16141, 13914, 16528, 0.8032950d, AbstractGCEvent.Type.TENURED)); + GCEvent event1 = new GCEvent(0.0d, 1534, 276, 16256, 0.0084272d, AbstractGCEvent.Type.GC); + GCEvent childEvent1 = new GCEvent(0.0d, 1534, 128, 1664, 0.0082759d, AbstractGCEvent.Type.DEF_NEW); + childEvent1.getGeneration(); + event1.add(childEvent1); + event1.getGeneration(); + + GCEvent event2 = new GCEvent(11.653d, 6560, 5492, 16256, 0.2858561d, AbstractGCEvent.Type.FULL_GC); + GCEvent childEvent2 = new GCEvent(11.653d, 5634, 5492, 14592, 0.2856516d, AbstractGCEvent.Type.TENURED); + event2.add(childEvent2); + event2.getGeneration(); + + GCEvent event3 = new GCEvent(22.879d, 16358, 9916, 16576, 0.8142078d, AbstractGCEvent.Type.GC); + GCEvent childEvent3a = new GCEvent(22.879d, 1855, 125, 1856, 0.0099038d, AbstractGCEvent.Type.DEF_NEW); + event3.add(childEvent3a); + GCEvent childEvent3b = new GCEvent(22.889d, 14638, 9916, 14720, 0.8038262d, AbstractGCEvent.Type.TENURED); + event3.add(childEvent3b); + event3.getGeneration(); + + GCEvent event4 = new GCEvent(31.788d, 17881, 13914, 18640, 0.8036514d, AbstractGCEvent.Type.FULL_GC); + GCEvent childEvent4 = new GCEvent(31.788d, 16141, 13914, 16528, 0.8032950d, AbstractGCEvent.Type.TENURED); + event4.add(childEvent4); + event4.getGeneration(); assertEquals("model.size()", 4, model.size()); Iterator> i = model.getStopTheWorldEvents(); @@ -162,7 +186,7 @@ public void testPrintHeapAtGC() throws Exception { InputStream in = getInputStream(gcResource.getResourceName()); final DataReader reader = new DataReaderSun1_6_0(gcResource, in, GcLogType.SUN1_4); GCModel model = reader.read(); - + assertEquals("GC count", 2, model.size()); assertEquals("GC pause", 0.0083579, model.getGCPause().getMax(), 0.00000001); assertEquals("Full GC pause", 0.0299536, model.getFullGCPause().getMax(), 0.00000001); diff --git a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java index a2ca0469..e0b1ed2b 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java @@ -1,12 +1,19 @@ package com.tagtraum.perf.gcviewer.model; -import static org.hamcrest.Matchers.closeTo; -import static org.junit.Assert.assertThat; - +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.imp.DataReaderException; +import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; import com.tagtraum.perf.gcviewer.math.DoubleData; import com.tagtraum.perf.gcviewer.model.AbstractGCEvent.Type; import org.junit.Test; +import java.io.IOException; +import java.util.concurrent.ExecutionException; + +import static org.hamcrest.Matchers.closeTo; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + /** * Specific tests for {@link GCModel} implementation. */ @@ -27,4 +34,20 @@ public void fullGcInterval() throws Exception { assertThat("max interval", fullGcInterval.getMax(), closeTo(3, 0.001)); assertThat("min interval", fullGcInterval.getMin(), closeTo(1, 0.001)); } + + @Test + public void testEquals_ForIdenticalModels() throws IOException, ExecutionException, InterruptedException, DataReaderException { + // load model twice, should be identical + GCResource gcResource = new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); + DataReaderFacade dataReader = new DataReaderFacade(); + + GCModel actual = dataReader.loadModel(gcResource); + GCModel expected = dataReader.loadModel(gcResource); + assertThat(actual, is(expected)); + } + + @Test + public void testEquals_ForEmptyModels() { + assertThat(new GCModel(), is(new GCModel())); + } } From 12070b2ba393a8b0629a29441860f05f526349a0 Mon Sep 17 00:00:00 2001 From: "martin.geldmacher" Date: Sat, 30 Apr 2016 18:55:56 +0200 Subject: [PATCH 4/8] GCModel/FileInformation: Also store creation date of underlying resource In cases where the creation date is unavailable (URL resource, unix filestystem) the lastModified time is used instead. --- .../tagtraum/perf/gcviewer/model/GCModel.java | 85 +++++++++++++++---- 1 file changed, 67 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java index 891315d9..e5941212 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java @@ -13,6 +13,8 @@ import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; import java.time.Duration; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; @@ -36,29 +38,56 @@ public class GCModel implements Serializable { */ private static class FileInformation implements Serializable { private static final long serialVersionUID = 1L; + private static final Logger logger = Logger.getLogger(FileInformation.class.getName()); + public long creationTime; public long lastModified; public long length; public FileInformation() { - this(-1, -1); + creationTime = 0; + creationTime = 0; + length = 0; } - public FileInformation(long lastModified, long length) { - super(); + public FileInformation(File file) { + if (file == null) + throw new IllegalArgumentException("File must not be null!"); - this.lastModified = lastModified; - this.length = length; + Optional fileAttributes = getFileAttributes(file); + this.lastModified = file.lastModified(); + this.creationTime = determineCreationDate(file, fileAttributes); + this.length = file.length(); + } + + private Optional getFileAttributes(File file) { + try { + return Optional.of(Files.readAttributes(file.toPath(), BasicFileAttributes.class)); + } + catch (IOException ex) { + logger.log(Level.WARNING, "Failed to read attributes of file " + file + ". Reason: " + ex.getMessage()); + logger.log(Level.FINER, "Details: ", ex); + } + return Optional.empty(); + } + + private long determineCreationDate(File file, Optional fileAttributes) { + if (fileAttributes.isPresent()) { + return fileAttributes.get().creationTime().toMillis(); + } + else { + // Creation date is unavailable on unix based oS + return file.lastModified(); + } } public void setFileInformation(FileInformation other) { + this.creationTime = other.creationTime; this.lastModified = other.lastModified; this.length = other.length; } - /** - * @see java.lang.Object#equals(java.lang.Object) - */ + @Override public boolean equals(Object other) { if (this == other) { return true; @@ -72,8 +101,15 @@ public boolean equals(Object other) { FileInformation fileInfo = (FileInformation)other; - return fileInfo.lastModified == lastModified - && fileInfo.length == length; + return fileInfo.lastModified == lastModified && fileInfo.creationTime == creationTime && fileInfo.length == length; + } + + @Override + public int hashCode() { + int result = (int) (creationTime ^ (creationTime >>> 32)); + result = 31 * result + (int) (lastModified ^ (lastModified >>> 32)); + result = 31 * result + (int) (length ^ (length >>> 32)); + return result; } @Override @@ -189,6 +225,10 @@ public long getLastModified() { return fileInformation.lastModified; } + public long getCreationTime() { + return fileInformation.creationTime; + } + public URL getURL() { return url; } @@ -232,19 +272,28 @@ public void printDetailedInformation() { private FileInformation readFileInformation(URL url) { FileInformation fileInformation = new FileInformation(); - URLConnection urlConnection = null; + URLConnection urlConnection; try { - urlConnection = url.openConnection(); if (url.getProtocol().startsWith("http")) { - ((HttpURLConnection)urlConnection).setRequestMethod("HEAD"); + urlConnection = url.openConnection(); + ((HttpURLConnection) urlConnection).setRequestMethod("HEAD"); + try (InputStream inputStream = urlConnection.getInputStream()) { + fileInformation.length = urlConnection.getContentLength(); + fileInformation.lastModified = urlConnection.getLastModified(); + } } - try (InputStream inputStream = urlConnection.getInputStream()) { - fileInformation.length = urlConnection.getContentLength(); - fileInformation.lastModified = urlConnection.getLastModified(); + else { + if (url.getProtocol().startsWith("file")) { + File file = new File(url.getFile()); + if (file.exists()) { + fileInformation = new FileInformation(file); + } + } } } catch (IOException e) { - if (LOG.isLoggable(Level.WARNING)) LOG.log(Level.WARNING, "Failed to obtain age and length of URL " + url, e); + if (LOG.isLoggable(Level.WARNING)) + LOG.log(Level.WARNING, "Failed to obtain age and length of URL " + url, e); } return fileInformation; @@ -257,7 +306,7 @@ public void setURL(URL url) { public boolean isDifferent(File otherFile) { // we just ignore the file name for now... - FileInformation fileInformation = new FileInformation(otherFile.lastModified(), otherFile.length()); + FileInformation fileInformation = new FileInformation(otherFile); return !this.fileInformation.equals(fileInformation); } From 262dfed6c0f1ab112e33074aafa5673988f61a39 Mon Sep 17 00:00:00 2001 From: gelder Date: Mon, 18 Apr 2016 23:01:00 +0200 Subject: [PATCH 5/8] Support for logfile rotation (#61) Support for rotated logfiles has been added. This allows to open a series of consecutive logfiles and treat them as one (merged) gc log. This allows to analyze logfiles that have been created over a longer period in a production environment. --- .../ctrl/GCModelLoaderController.java | 7 + .../perf/gcviewer/ctrl/action/OpenSeries.java | 66 ++ .../ctrl/impl/AbstractGCModelLoaderImpl.java | 62 ++ .../impl/GCModelLoaderControllerImpl.java | 42 +- .../ctrl/impl/GCModelLoaderFactory.java | 28 + .../gcviewer/ctrl/impl/GCModelLoaderImpl.java | 75 +-- .../ctrl/impl/GCModelSeriesLoaderImpl.java | 33 + .../ctrl/impl/GCViewerGuiBuilder.java | 55 +- .../gcviewer/ctrl/impl/GcSeriesLoader.java | 229 +++++++ .../perf/gcviewer/imp/DataReaderFacade.java | 20 +- .../gcviewer/model/AbstractGcResource.java | 119 ++-- .../tagtraum/perf/gcviewer/model/GCModel.java | 6 + .../perf/gcviewer/model/GCResource.java | 104 +-- .../perf/gcviewer/model/GcResourceFile.java | 51 +- .../perf/gcviewer/model/GcResourceSeries.java | 129 ++++ .../perf/gcviewer/view/ActionCommands.java | 1 + src/main/resources/localStrings.properties | 6 + src/main/resources/localStrings_de.properties | 5 + src/main/resources/localStrings_fr.properties | 1 + src/main/resources/localStrings_sv.properties | 1 + .../ctrl/impl/GCModelLoaderFactoryTest.java | 42 ++ .../impl/GCModelSeriesLoaderImplTest.java | 48 ++ .../ctrl/impl/GcSeriesLoaderTest.java | 187 ++++++ .../impl/TestGCModelLoaderController.java | 20 + .../gcviewer/imp/TestDataReaderFacade.java | 30 + .../gcviewer/model/GcResourceSeriesTest.java | 91 +++ .../SampleSun1_8_0Series-ManuallyMerged.txt | 603 ++++++++++++++++++ .../openjdk/SampleSun1_8_0Series-Part1.txt | 111 ++++ .../openjdk/SampleSun1_8_0Series-Part2.txt | 98 +++ .../openjdk/SampleSun1_8_0Series-Part3.txt | 98 +++ .../openjdk/SampleSun1_8_0Series-Part4.txt | 97 +++ .../openjdk/SampleSun1_8_0Series-Part5.txt | 97 +++ .../openjdk/SampleSun1_8_0Series-Part6.txt | 102 +++ .../openjdk/SampleSun1_8_0Series-Part7.txt | 4 + 34 files changed, 2413 insertions(+), 255 deletions(-) create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenSeries.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/AbstractGCModelLoaderImpl.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactory.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoader.java create mode 100644 src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceSeries.java create mode 100644 src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactoryTest.java create mode 100644 src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImplTest.java create mode 100644 src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoaderTest.java create mode 100644 src/test/java/com/tagtraum/perf/gcviewer/model/GcResourceSeriesTest.java create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-ManuallyMerged.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part1.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part2.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part3.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part4.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part5.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part6.txt create mode 100644 src/test/resources/openjdk/SampleSun1_8_0Series-Part7.txt diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/GCModelLoaderController.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/GCModelLoaderController.java index 3b90b958..6072154c 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/GCModelLoaderController.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/GCModelLoaderController.java @@ -30,6 +30,13 @@ public interface GCModelLoaderController { void open(List gcResourceList); + /** + * Opens the given {@link GCResource}s as a series of rotated logfiles. + * + * @param gcResourceList a list of rotated gc logfiles. Ordering is not required. + */ + void openAsSeries(List gcResourceList); + /** * Reload all models of gcDocument and provide tracker. The tracker will * fire a propertyChangeEvent, as soon as all GCModelLoaders have finished loading. diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenSeries.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenSeries.java new file mode 100644 index 00000000..3991e848 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/OpenSeries.java @@ -0,0 +1,66 @@ +package com.tagtraum.perf.gcviewer.ctrl.action; + +import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.util.LocalisationHelper; +import com.tagtraum.perf.gcviewer.view.ActionCommands; +import com.tagtraum.perf.gcviewer.view.GCViewerGui; +import com.tagtraum.perf.gcviewer.view.OpenFileView; +import com.tagtraum.perf.gcviewer.view.util.ImageHelper; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + +/** + * Allows to open a series of log files, treating them as a consecutive log. + * + * @author martin.geldmacher + */ +public class OpenSeries extends AbstractAction { + private static final Logger logger = Logger.getLogger(OpenSeries.class.getName()); + + private GCModelLoaderController controller; + private GCViewerGui gcViewer; + private OpenFileView openFileView; + + public OpenSeries(GCModelLoaderController controller, final GCViewerGui gcViewer) { + this.controller = controller; + this.gcViewer = gcViewer; + + putValue(NAME, LocalisationHelper.getString("main_frame_menuitem_open_series")); + putValue(SHORT_DESCRIPTION, LocalisationHelper.getString("main_frame_menuitem_hint_open_series")); + putValue(MNEMONIC_KEY, Integer.valueOf(LocalisationHelper.getString("main_frame_menuitem_mnemonic_open_series").charAt(0))); + putValue(ACTION_COMMAND_KEY, ActionCommands.OPEN_SERIES.toString()); + putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('S', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + putValue(SMALL_ICON, ImageHelper.loadImageIcon("open.png")); + + openFileView = new OpenFileView(); + } + + @Override + public void actionPerformed(ActionEvent e) { + final int val = openFileView.showOpenDialog(gcViewer); + if (val == JFileChooser.APPROVE_OPTION) { + File[] selectedFiles = openFileView.getSelectedFiles(); + List resources = getResources(selectedFiles); + controller.openAsSeries(resources); + } + } + + private List getResources(File[] selectedFiles) { + if (selectedFiles == null || selectedFiles.length == 0) + throw new IllegalArgumentException("At least one file must be selected!"); + + java.util.List resources = new ArrayList<>(); + for (File file : selectedFiles) { + resources.add(new GcResourceFile(file)); + } + return resources; + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/AbstractGCModelLoaderImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/AbstractGCModelLoaderImpl.java new file mode 100644 index 00000000..d8021054 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/AbstractGCModelLoaderImpl.java @@ -0,0 +1,62 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.ctrl.GCModelLoader; +import com.tagtraum.perf.gcviewer.imp.DataReaderException; +import com.tagtraum.perf.gcviewer.imp.MonitoredBufferedInputStream; +import com.tagtraum.perf.gcviewer.model.GCModel; + +import javax.swing.*; +import java.beans.PropertyChangeEvent; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Base class for {@link GCModelLoader}s + * + * @author martin.geldmacher (refactored) + */ +public abstract class AbstractGCModelLoaderImpl extends SwingWorker implements GCModelLoader { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName() == MonitoredBufferedInputStream.PROGRESS) { + setProgress((int) evt.getNewValue()); + } + } + + protected void done() { + Logger logger = getGcResource().getLogger(); + + try { + getGcResource().setModel(get()); + // TODO delete + getGcResource().getModel().printDetailedInformation(); + } + catch (InterruptedException e) { + logger.log(Level.FINE, "model get() interrupted", e); + } + catch (ExecutionException | RuntimeException e) { + if (logger.isLoggable(Level.WARNING)) + logger.log(Level.WARNING, "Failed to create GCModel from " + getGcResource().getResourceName(), e); + } + } + + @Override + protected GCModel doInBackground() throws Exception { + setProgress(0); + final GCModel result; + try { + result = loadGcModel(); + } + catch (DataReaderException | RuntimeException e) { + Logger logger = getGcResource().getLogger(); + if (logger.isLoggable(Level.FINE)) { + logger.log(Level.FINE, "Failed to load GCModel from " + getGcResource().getResourceName(), e); + } + throw e; + } + return result; + } + + protected abstract GCModel loadGcModel() throws DataReaderException; +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java index da4d315e..d26dc91f 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java @@ -6,6 +6,7 @@ import com.tagtraum.perf.gcviewer.ctrl.impl.FileDropTargetListener.DropFlavor; import com.tagtraum.perf.gcviewer.model.GcResourceFile; import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import com.tagtraum.perf.gcviewer.view.GCDocument; import com.tagtraum.perf.gcviewer.view.GCViewerGui; import com.tagtraum.perf.gcviewer.view.GCViewerGuiMenuBar; @@ -17,10 +18,7 @@ import java.awt.event.ActionListener; import java.beans.PropertyChangeListener; import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Controller class for {@link GCModelLoader}. @@ -113,25 +111,25 @@ private ViewMenuController getViewMenuController() { throw new IllegalStateException("no ActionListener of type 'ViewMenuController' found"); } - + private void openGCResource(GCResource gcResource) { GCModelLoader loader = new GCModelLoaderImpl(gcResource); + openGCResource(gcResource, loader); + } + + private void openGCResource(GCResource gcResource, GCModelLoader loader) { GCDocument document = new GCDocument(gcViewerGui.getPreferences(), gcResource.getResourceName()); - document.setDropTarget( - new DropTarget(document, - DnDConstants.ACTION_COPY, - new FileDropTargetListener(this, DropFlavor.ADD)) - ); + document.setDropTarget(new DropTarget(document, DnDConstants.ACTION_COPY, new FileDropTargetListener(this, DropFlavor.ADD))); document.addInternalFrameListener(new GCViewerGuiInternalFrameController()); - + gcViewerGui.addDocument(document); - + GCDocumentController docController = new GCDocumentController(document); docController.addGCResource(loader, getViewMenuController()); - + loader.execute(); } - + @Override public void open(File[] files) { List gcResourceList = new ArrayList(); @@ -164,7 +162,15 @@ public void open(List gcResourceList) { getRecentGCResourcesModel().add(gcResourceList); } - + + @Override + public void openAsSeries(List gcResourceList) { + GcResourceSeries resourceSeries = new GcResourceSeries(gcResourceList); + GCModelLoader loader = GCModelLoaderFactory.createFor(resourceSeries); + openGCResource(loader.getGcResource(), loader); + getRecentGCResourcesModel().add(Collections.singletonList(resourceSeries)); + } + @Override public GCModelLoaderGroupTracker reload(GCDocument gcDocument) { GCModelLoaderGroupTracker tracker = new GCModelLoaderGroupTrackerImpl(); @@ -172,16 +178,16 @@ public GCModelLoaderGroupTracker reload(GCDocument gcDocument) { if (gcResource.hasUnderlyingResourceChanged()) { gcResource.reset(); gcResource.setIsReload(true); - GCModelLoader loader = new GCModelLoaderImpl(gcResource); + GCModelLoader loader = GCModelLoaderFactory.createFor(gcResource); GCDocumentController docController = getDocumentController(gcDocument); docController.reloadGCResource(loader); tracker.addGcModelLoader(loader); } } - + tracker.execute(); - + return tracker; } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactory.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactory.java new file mode 100644 index 00000000..a1683b99 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactory.java @@ -0,0 +1,28 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.ctrl.GCModelLoader; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; + +/** + * @author martin.geldmacher + */ +public class GCModelLoaderFactory { + /** + * Creates an appropriate {@link GCModelLoader} for the given {@link GCResource} + * + * @param gcResource the {@link GCResource} + * @return an appropriate {@link GCModelLoader} + */ + public static GCModelLoader createFor(GCResource gcResource) { + if (gcResource instanceof GcResourceFile) { + return new GCModelLoaderImpl(gcResource); + } + else if (gcResource instanceof GcResourceSeries) { + return new GCModelSeriesLoaderImpl((GcResourceSeries) gcResource); + } + else + throw new IllegalArgumentException("Unknown GcResource: " + gcResource); + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java index 60e60ae9..288f3a0d 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderImpl.java @@ -1,81 +1,36 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import com.tagtraum.perf.gcviewer.ctrl.GCModelLoader; import com.tagtraum.perf.gcviewer.imp.DataReaderException; import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; -import com.tagtraum.perf.gcviewer.imp.MonitoredBufferedInputStream; import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; -import javax.swing.*; -import java.beans.PropertyChangeEvent; -import java.util.concurrent.ExecutionException; -import java.util.logging.Level; -import java.util.logging.Logger; - /** * Loads the model in a background thread (progress can be tracked by propertyChangeListeners). * * @author Hans Bausewein * @author Joerg Wuethrich - *

Date: November 8, 2013

+ *

Date: November 8, 2013

*/ -public class GCModelLoaderImpl extends SwingWorker implements GCModelLoader { - - private final DataReaderFacade dataReaderFacade; +public class GCModelLoaderImpl extends AbstractGCModelLoaderImpl { + private final DataReaderFacade dataReaderFacade; private final GCResource gcResource; - - public GCModelLoaderImpl(final GCResource gcResource) { - super(); - - this.gcResource = gcResource; - this.dataReaderFacade = new DataReaderFacade(); - this.dataReaderFacade.addPropertyChangeListener(this); // receive progress updates from loading - } - - @Override - protected GCModel doInBackground() throws Exception { - setProgress(0); - final GCModel result; - try { - result = dataReaderFacade.loadModel(gcResource); - } - catch (DataReaderException | RuntimeException e) { - Logger logger = gcResource.getLogger(); - if (logger.isLoggable(Level.FINE)) { - logger.log(Level.FINE, "Failed to load GCModel from " + gcResource.getResourceName(), e); - } - throw e; - } - return result; - } - protected void done() { - Logger logger = gcResource.getLogger(); + public GCModelLoaderImpl(final GCResource gcResource) { + super(); - try { - gcResource.setModel(get()); - // TODO delete - gcResource.getModel().printDetailedInformation(); - } - catch (InterruptedException e) { - logger.log(Level.FINE, "model get() interrupted", e); - } - catch (ExecutionException | RuntimeException e) { - if (logger.isLoggable(Level.WARNING)) - logger.log(Level.WARNING, "Failed to create GCModel from " + gcResource.getResourceName(), e); - } - } + this.gcResource = gcResource; + this.dataReaderFacade = new DataReaderFacade(); + this.dataReaderFacade.addPropertyChangeListener(this); // receive progress updates from loading + } - @Override - public GCResource getGcResource() { - return gcResource; - } + @Override + protected GCModel loadGcModel() throws DataReaderException { + return dataReaderFacade.loadModel(gcResource); + } @Override - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName() == MonitoredBufferedInputStream.PROGRESS) { - setProgress((int)evt.getNewValue()); - } + public GCResource getGcResource() { + return gcResource; } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java new file mode 100644 index 00000000..0bb70c81 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java @@ -0,0 +1,33 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.imp.DataReaderException; +import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; + +/** + * An {@link AbstractGCModelLoaderImpl} that loads {@link GCResource}s as a series of logs + * + * @author gelder. + */ +public class GCModelSeriesLoaderImpl extends AbstractGCModelLoaderImpl { + private final DataReaderFacade dataReaderFacade; + private final GcResourceSeries gcResourceSeries; + + public GCModelSeriesLoaderImpl(GcResourceSeries gcResourceSeries) { + this.dataReaderFacade = new DataReaderFacade(); + this.dataReaderFacade.addPropertyChangeListener(this); // receive progress updates from loading + this.gcResourceSeries = gcResourceSeries; + } + + @Override + public GCResource getGcResource() { + return gcResourceSeries; + } + + @Override + protected GCModel loadGcModel() throws DataReaderException { + return dataReaderFacade.loadModelFromSeries(gcResourceSeries); + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java index d909f048..c4f42859 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiBuilder.java @@ -1,54 +1,22 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import java.awt.Image; -import java.awt.dnd.DnDConstants; -import java.awt.dnd.DropTarget; -import java.util.Map; -import java.util.TreeMap; - -import javax.swing.Action; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JComboBox; -import javax.swing.JDesktopPane; -import javax.swing.JToggleButton; - import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; -import com.tagtraum.perf.gcviewer.ctrl.action.About; -import com.tagtraum.perf.gcviewer.ctrl.action.Arrange; -import com.tagtraum.perf.gcviewer.ctrl.action.Exit; -import com.tagtraum.perf.gcviewer.ctrl.action.Export; -import com.tagtraum.perf.gcviewer.ctrl.action.LicenseAction; -import com.tagtraum.perf.gcviewer.ctrl.action.OSXFullScreen; -import com.tagtraum.perf.gcviewer.ctrl.action.OpenFile; -import com.tagtraum.perf.gcviewer.ctrl.action.OpenURL; -import com.tagtraum.perf.gcviewer.ctrl.action.ReadmeAction; -import com.tagtraum.perf.gcviewer.ctrl.action.Refresh; -import com.tagtraum.perf.gcviewer.ctrl.action.Watch; -import com.tagtraum.perf.gcviewer.ctrl.action.Zoom; +import com.tagtraum.perf.gcviewer.ctrl.action.*; import com.tagtraum.perf.gcviewer.ctrl.impl.FileDropTargetListener.DropFlavor; import com.tagtraum.perf.gcviewer.util.LocalisationHelper; -import com.tagtraum.perf.gcviewer.view.ActionCommands; -import com.tagtraum.perf.gcviewer.view.DesktopPane; -import com.tagtraum.perf.gcviewer.view.GCViewerGui; -import com.tagtraum.perf.gcviewer.view.GCViewerGuiMenuBar; -import com.tagtraum.perf.gcviewer.view.GCViewerGuiToolBar; -import com.tagtraum.perf.gcviewer.view.RecentGCResourcesMenu; +import com.tagtraum.perf.gcviewer.view.*; import com.tagtraum.perf.gcviewer.view.model.GCPreferences; -import com.tagtraum.perf.gcviewer.view.renderer.ConcurrentGcBegionEndRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.FullGCLineRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.GCRectanglesRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.GCTimesRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.IncLineRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.InitialMarkLevelRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalHeapRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalTenuredRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalYoungRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedHeapRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedTenuredRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedYoungRenderer; +import com.tagtraum.perf.gcviewer.view.renderer.*; import com.tagtraum.perf.gcviewer.view.util.ImageHelper; import com.tagtraum.perf.gcviewer.view.util.OSXSupport; +import javax.swing.*; +import java.awt.*; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTarget; +import java.util.Map; +import java.util.TreeMap; + /** * This class is responsible for construction of {@link GCViewerGui}, whose construction is * quite complex. It is a simple implementation of the Builder pattern described in @@ -87,6 +55,7 @@ private Map initActionMap(GCModelLoaderController controller, GC actions.put(ActionCommands.SHOW_README.toString(), new ReadmeAction(gui)); actions.put(ActionCommands.SHOW_LICENSE.toString(), new LicenseAction(gui)); actions.put(ActionCommands.OPEN_FILE.toString(), new OpenFile(controller, gui)); + actions.put(ActionCommands.OPEN_SERIES.toString(), new OpenSeries(controller, gui)); actions.put(ActionCommands.OPEN_URL.toString(), new OpenURL(controller, gui)); actions.put(ActionCommands.REFRESH.toString(), new Refresh(controller, gui)); actions.put(ActionCommands.EXPORT.toString(), new Export(gui)); @@ -128,6 +97,7 @@ private GCViewerGuiMenuBar initMenuBar(Map actions, // file menu menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_FILE.toString())); + menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_SERIES.toString())); menuBar.addToFileMenu(actions.get(ActionCommands.OPEN_URL.toString())); RecentGCResourcesMenu recentResourceNamesMenu = new RecentGCResourcesMenu(); recentResourceNamesMenu.setIcon(ImageHelper.createEmptyImageIcon(20, 20)); @@ -291,6 +261,7 @@ private GCViewerGuiToolBar initToolBar(Map actions) { toolBar.setFloatable(false); toolBar.add(actions.get(ActionCommands.OPEN_FILE.toString())); + toolBar.add(actions.get(ActionCommands.OPEN_SERIES.toString())); toolBar.add(actions.get(ActionCommands.OPEN_URL.toString())); toolBar.add(actions.get(ActionCommands.EXPORT.toString())); toolBar.add(actions.get(ActionCommands.REFRESH.toString())); diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoader.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoader.java new file mode 100644 index 00000000..e73986ff --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoader.java @@ -0,0 +1,229 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.imp.DataReaderException; +import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; +import com.tagtraum.perf.gcviewer.model.AbstractGCEvent; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +/** + * Allows to load an (unordered) list of {@link GCResource} and treats them as a consecutive series of {@link GCResource}s. + * + * @author martin.geldmacher + */ +public class GcSeriesLoader { + private static final Logger logger = Logger.getLogger(GcSeriesLoader.class.getName()); + private final DataReaderFacade dataReaderFacade; + + public GcSeriesLoader(DataReaderFacade dataReaderFacade) { + this.dataReaderFacade = dataReaderFacade; + } + + public GCModel load(GcResourceSeries series) throws DataReaderException { + if (series == null || series.getResourcesInOrder().size() == 0) { + throw new IllegalArgumentException("No resources to load!"); + } + + Map startTimeToGcModel = determineStartTimePerGcModel(series); + List sortedModels = sortResources(startTimeToGcModel); + GCModel mergedModel = mergeModels(sortedModels); + return mergedModel; + } + + private Map determineStartTimePerGcModel(GcResourceSeries series) throws DataReaderException { + Map startTimeToGcModel = new HashMap<>(); + for (GCResource resource : series.getResourcesInOrder()) { + Optional model = loadGcModel(resource); + if (model.isPresent()) { + Timestamp timeStamp = getCreationDate(model.get()); + startTimeToGcModel.put(timeStamp, model.get()); + } + else { + logger.log(Level.WARNING, "Failed to load " + resource + " - ignoring it"); + } + } + return startTimeToGcModel; + } + + protected Timestamp getCreationDate(GCModel model) throws DataReaderException { + Timestamp timeStamp; + Optional firstDateStamp = getFirstDateStampFromModel(model); + if (firstDateStamp.isPresent()) { + timeStamp = firstDateStamp.get(); + } + else { + Optional firstTimeStamp = getFirstTimeStampFromModel(model); + if(firstTimeStamp.isPresent()) { + timeStamp = firstTimeStamp.get(); + } + else { + logger.log(Level.WARNING, "Logfile contains neither date- nor timestamp. Using file creation date as" + + " fallback. Consider using -XX:+PrintGCDateStamps to enable logging of dates for GC events."); + timeStamp = getCreationDateFromFile(model); + } + } + return timeStamp; + } + + protected Optional getFirstDateStampFromModel(GCModel model) { + ZonedDateTime firstDateStamp = model.getFirstDateStamp(); + if(firstDateStamp == null) + return Optional.empty(); + else + return Optional.of(new GcDateStamp(firstDateStamp)); + } + protected Optional getFirstTimeStampFromModel(GCModel model) { + Optional firstTimeStamp = model.getFirstTimeStamp(); + if (firstTimeStamp.isPresent()) + return Optional.of(new GcTimeStamp(firstTimeStamp.get())); + else + return Optional.empty(); + } + + protected Timestamp getCreationDateFromFile(GCModel model) { + ZonedDateTime creationDate = Instant.ofEpochMilli(model.getCreationTime()).atZone(ZoneId.systemDefault()); + return new GcDateStamp(creationDate); + } + + protected List sortResources(Map startTimeToGcModel) throws DataReaderException { + try { + List sortedModels = startTimeToGcModel.entrySet() + .stream() + .sorted((x, y) -> x.getKey().compareTo(y.getKey())) + .map(Map.Entry::getValue) + .collect(Collectors.toList()); + return sortedModels; + } + catch (Exception ex) { + throw new DataReaderException("Logfile series has mixed date- and timestamps. Can't determine logfile order", ex); + } + } + + private Optional loadGcModel(GCResource resource) { + try { + return Optional.of(dataReaderFacade.loadModel(resource)); + } + catch (DataReaderException ex) { + logger.log(Level.WARNING, "Failed to read " + resource + ". Reason: " + ex.getMessage()); + logger.log(Level.FINER, "Details: ", ex); + return Optional.empty(); + } + } + + private GCModel mergeModels(List models) { + GCModel mergedModel = models.get(0); + for (int i = 1; i < models.size(); i++) { + GCModel model = models.get(i); + Iterator> iterator = model.getEvents(); + while (iterator.hasNext()) { + mergedModel.add(iterator.next()); + } + } + + // Use URL of last contained file. In case of a refresh this is the only file that can have changed + mergedModel.setURL(models.get(models.size() - 1).getURL()); + return mergedModel; + } + + interface Timestamp extends Comparable { + } + + /** + * Datestamp of a GC log. + * Created when -XX:+PrintGCDateStamps is used + */ + static class GcDateStamp implements Timestamp { + + private ZonedDateTime time; + public GcDateStamp(ZonedDateTime time) { + this.time = time; + } + + @Override + public int compareTo(Timestamp o) { + if(o instanceof GcDateStamp) + return this.time.compareTo(((GcDateStamp)o).time); + throw new IllegalArgumentException("Can't compare Datestamp with Timestamp: " +o); + } + + @Override + public String toString() { + return "GcDateStamp{" + + "time=" + time + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + GcDateStamp that = (GcDateStamp) o; + + return time != null ? time.equals(that.time) : that.time == null; + + } + + @Override + public int hashCode() { + return time != null ? time.hashCode() : 0; + } + } + + /** + * Timestamp of a GC log. Relative to application start + * Created when -XX:+PrintGCTimeStamps is used + */ + static class GcTimeStamp implements Timestamp { + + private double time; + public GcTimeStamp(double time) { + this.time = time; + } + + @Override + public int compareTo(Timestamp o) { + if(o instanceof GcTimeStamp) { + return Double.compare(time, ((GcTimeStamp)o).time); + } + throw new IllegalArgumentException("Can't compare Timestamp with Datestamp: " +o); + } + + @Override + public String toString() { + return "GcTimeStamp{" + + "time=" + time + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + GcTimeStamp that = (GcTimeStamp) o; + + return Double.compare(that.time, time) == 0; + + } + + @Override + public int hashCode() { + long temp = Double.doubleToLongBits(time); + return (int) (temp ^ (temp >>> 32)); + } + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java index 2ac68fa6..40726fd3 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java @@ -1,8 +1,10 @@ package com.tagtraum.perf.gcviewer.imp; -import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.ctrl.impl.GcSeriesLoader; import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import com.tagtraum.perf.gcviewer.util.BuildInfoReader; import com.tagtraum.perf.gcviewer.util.HttpUrlConnectionHelper; import com.tagtraum.perf.gcviewer.util.LocalisationHelper; @@ -50,8 +52,8 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { if (gcResource == null) { throw new NullPointerException("gcResource must never be null"); } - if(!(gcResource instanceof GcResourceFile)) - throw new UnsupportedOperationException("Only supported for files!"); + if (!(gcResource instanceof GcResourceFile)) + throw new UnsupportedOperationException("Only supported for files!"); DataReaderException dataReaderException = new DataReaderException(); GCModel model = null; @@ -75,6 +77,18 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { return model; } + /** + * Loads the {@link GCResource}s as a rotated series of logfiles. Takes care of ordering them + * + * @param gcResource the {@link GcResourceSeries} to load + * @return a {@link GCModel} containing all events found in the given {@link GCResource}s that were readable + * @throws DataReaderException + */ + public GCModel loadModelFromSeries(GcResourceSeries gcResource) throws DataReaderException { + GcSeriesLoader seriesLoader = new GcSeriesLoader(this); + return seriesLoader.load(gcResource); + } + /** * Open and parse data designated by gcResource. * diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java index 1760c808..5f21ba03 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/AbstractGcResource.java @@ -2,7 +2,6 @@ import javax.swing.event.SwingPropertyChangeSupport; import java.beans.PropertyChangeListener; -import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; /** @@ -10,82 +9,84 @@ * * @author martin.geldmacher (refactored) */ -public abstract class AbstractGcResource implements GCResource -{ - private static final AtomicInteger COUNT = new AtomicInteger(0); - private String resourceName; - private GCModel model; - private SwingPropertyChangeSupport propertyChangeSupport; - private Logger logger; - private boolean isReload; - private boolean isReadCancelled; +public abstract class AbstractGcResource implements GCResource { + private String resourceName; + private GCModel model; + private SwingPropertyChangeSupport propertyChangeSupport; + private Logger logger; + private boolean isReload; + private boolean isReadCancelled; - public AbstractGcResource(String resourceName) - { - super(); - this.model = new GCModel(); - this.propertyChangeSupport = new SwingPropertyChangeSupport(this); - logger = Logger.getLogger("GCResource".concat(Integer.toString(COUNT.incrementAndGet()))); - this.resourceName = resourceName; - } + public AbstractGcResource(String resourceName, Logger logger) { + super(); + this.resourceName = resourceName; + this.logger = logger; + this.model = new GCModel(); + this.propertyChangeSupport = new SwingPropertyChangeSupport(this); + } + + @Override + public String getResourceName() { + return resourceName; + } - @Override - public String getResourceName() { - return resourceName; - } + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.addPropertyChangeListener(listener); + } - @Override - public void addPropertyChangeListener(PropertyChangeListener listener) { - this.propertyChangeSupport.addPropertyChangeListener(listener); - } + @Override + public Logger getLogger() { + return logger; + } - @Override - public Logger getLogger() { - return logger; - } + @Override + public void setLogger(Logger logger) { + this.logger = logger; + } - @Override - public GCModel getModel() { - return model; - } + @Override + public GCModel getModel() { + return model; + } - @Override - public boolean isReload() { - return isReload; - } + @Override + public boolean isReload() { + return isReload; + } - @Override - public boolean isReadCancelled() { + @Override + public boolean isReadCancelled() { return isReadCancelled; } - @Override - public void removePropertyChangeListener(PropertyChangeListener listener) { - this.propertyChangeSupport.removePropertyChangeListener(listener); - } + @Override + public void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.removePropertyChangeListener(listener); + } - @Override - public void setIsReload(boolean isReload) { - this.isReload = isReload; + @Override + public void setIsReload(boolean isReload) { + this.isReload = isReload; setIsReadCancelled(false); - } + } - @Override - public void setIsReadCancelled(boolean isReadCancelled) { + @Override + public void setIsReadCancelled(boolean isReadCancelled) { // TODO i18n this.getLogger().info("--> cancel requested"); this.isReadCancelled = isReadCancelled; - } + } - @Override - public void setModel(GCModel model) { - GCModel oldModel = this.model; - this.model = model; - propertyChangeSupport.firePropertyChange(GcResourceFile.PROPERTY_MODEL, oldModel, model); - } + @Override + public void setModel(GCModel model) { + GCModel oldModel = this.model; + this.model = model; + propertyChangeSupport.firePropertyChange(GcResourceFile.PROPERTY_MODEL, oldModel, model); + } - @Override - public void reset() { + @Override + public void reset() { this.isReadCancelled = false; this.isReload = false; } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java index e5941212..b94df491 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java @@ -982,6 +982,12 @@ public ZonedDateTime getFirstDateStamp() { ? get(0).getDatestamp() : null; } + public Optional getFirstTimeStamp() { + if(allEvents.size() > 0) + return Optional.of(get(0).getTimestamp()); + else + return Optional.empty(); + } public String toString() { return "GCModel[size=" + size() + "]: " + allEvents.toString(); diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java index 8e503d9c..113b9b84 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCResource.java @@ -8,54 +8,60 @@ * * @author Hans Bausewein * @author Joerg Wuethrich - *

Date: November 8, 2013

+ *

Date: November 8, 2013

*/ -public interface GCResource -{ - void addPropertyChangeListener(PropertyChangeListener listener); - - Logger getLogger(); - - GCModel getModel(); - - String getResourceName(); - - /** - * Returns true, if the underlying resource has changed. - * @return true, if the underlying resource has changed. - */ - boolean hasUnderlyingResourceChanged(); - - /** - * If this resource is being reloaded, this will return true. - * @return true if this resource is being reloaded. - */ - boolean isReload(); - - /** - * Returns true, if reading of this GCResource should be cancelled. - * @return true, if reading should be cancelled - */ - boolean isReadCancelled(); - - void removePropertyChangeListener(PropertyChangeListener listener); - - /** - * if this resource is being reloaded, set this property to true. - * @param isReload true, if this resource is being reloaded - */ - void setIsReload(boolean isReload); - - /** - * Indicate, that reading of this GCResource should be cancelled. - * @param isReadCancelled true, if read should be cancelled - */ - void setIsReadCancelled(boolean isReadCancelled); - - void setModel(GCModel model); - - /** - * reset internal boolean state to default (e.g. readCancelled) - */ - void reset(); +public interface GCResource { + void addPropertyChangeListener(PropertyChangeListener listener); + + Logger getLogger(); + + void setLogger(Logger logger); + + GCModel getModel(); + + String getResourceName(); + + /** + * Returns true, if the underlying resource has changed. + * + * @return true, if the underlying resource has changed. + */ + boolean hasUnderlyingResourceChanged(); + + /** + * If this resource is being reloaded, this will return true. + * + * @return true if this resource is being reloaded. + */ + boolean isReload(); + + /** + * Returns true, if reading of this GCResource should be cancelled. + * + * @return true, if reading should be cancelled + */ + boolean isReadCancelled(); + + void removePropertyChangeListener(PropertyChangeListener listener); + + /** + * if this resource is being reloaded, set this property to true. + * + * @param isReload true, if this resource is being reloaded + */ + void setIsReload(boolean isReload); + + /** + * Indicate, that reading of this GCResource should be cancelled. + * + * @param isReadCancelled true, if read should be cancelled + */ + void setIsReadCancelled(boolean isReadCancelled); + + void setModel(GCModel model); + + /** + * reset internal boolean state to default (e.g. readCancelled) + */ + void reset(); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java index 297052af..3be806e9 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceFile.java @@ -3,6 +3,8 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Logger; /** * Identifies a GC resource: a file or URL resource containing GC info. @@ -14,22 +16,22 @@ public class GcResourceFile extends AbstractGcResource { public static final String PROPERTY_MODEL = "model"; + private static final AtomicInteger COUNT = new AtomicInteger(0); - public GcResourceFile(File file) - { - this(file.getAbsolutePath()); - } + public GcResourceFile(File file) { + this(file.getAbsolutePath()); + } - public GcResourceFile(String resourceName) { - super(resourceName); + public GcResourceFile(String resourceName) { + super(resourceName, Logger.getLogger("GCResourceFile".concat(Integer.toString(COUNT.incrementAndGet())))); - if (resourceName == null) { - throw new IllegalArgumentException("resourceName cannot be null"); - } + if (resourceName == null) { + throw new IllegalArgumentException("resourceName cannot be null"); + } - } + } - public URL getResourceNameAsUrl() throws MalformedURLException { + public URL getResourceNameAsUrl() throws MalformedURLException { URL url = null; if (getResourceName().startsWith("http") || getResourceName().startsWith("file")) { url = new URL(getResourceName()); @@ -41,11 +43,12 @@ public URL getResourceNameAsUrl() throws MalformedURLException { return url; } - /** - * Same as {@link #getResourceNameAsUrl()}, but still returns a string, if MalFormedURLException occurred. - * @return same as getResourceNameAsUrl(), but without Exception - */ - public String getResourceNameAsUrlString() { + /** + * Same as {@link #getResourceNameAsUrl()}, but still returns a string, if MalFormedURLException occurred. + * + * @return same as getResourceNameAsUrl(), but without Exception + */ + public String getResourceNameAsUrlString() { try { return getResourceNameAsUrl().toString(); } @@ -55,7 +58,7 @@ public String getResourceNameAsUrlString() { } @Override - public boolean hasUnderlyingResourceChanged() { + public boolean hasUnderlyingResourceChanged() { if (getModel().getURL() == null) { return true; } @@ -63,7 +66,7 @@ public boolean hasUnderlyingResourceChanged() { return getModel().isDifferent(getModel().getURL()); } - @Override + @Override public boolean equals(Object obj) { if (this == obj) return true; @@ -83,7 +86,7 @@ else if (!getResourceNameAsUrlString().equals(other.getResourceNameAsUrlString() return true; } - @Override + @Override public int hashCode() { int prime = 31; int result = 1; @@ -92,9 +95,9 @@ public int hashCode() { return result; } - @Override - public String toString() { - return "GCResourceFile [resourceNameAsUrlString=" + getResourceNameAsUrlString() + ", isReload=" + isReload() - + ", logger=" + getLogger() + ", model=" + getModel() + "]"; - } + @Override + public String toString() { + return "GCResourceFile [resourceNameAsUrlString=" + getResourceNameAsUrlString() + ", isReload=" + isReload() + ", logger=" + getLogger() + ", model=" + + getModel() + "]"; + } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceSeries.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceSeries.java new file mode 100644 index 00000000..b604c895 --- /dev/null +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GcResourceSeries.java @@ -0,0 +1,129 @@ +package com.tagtraum.perf.gcviewer.model; + +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An (artificial) {@link GCResource} that represents a collection of actual {@link GCResource}s that are to be + * treated as one consecutive log. + * + * @author martin.geldmacher + */ +public class GcResourceSeries extends AbstractGcResource { + private static final Logger logger = Logger.getLogger(GcResourceSeries.class.getName()); + private static final AtomicInteger COUNT = new AtomicInteger(0); + private final List resourcesInOrder; + + public GcResourceSeries(List resourcesInOrder) { + super(buildName(resourcesInOrder), Logger.getLogger("GCResourceSeries".concat(Integer.toString(COUNT.incrementAndGet())))); + + this.resourcesInOrder = resourcesInOrder; + setLogger(resourcesInOrder); + } + + private void setLogger(List resourcesInOrder) { + // Contained GCResource should use the same logger + for (GCResource resource : resourcesInOrder) { + resource.setLogger(getLogger()); + } + } + + public List getResourcesInOrder() { + return resourcesInOrder; + } + + @Override + public boolean hasUnderlyingResourceChanged() { + // Assumption: Once a logfile has been rotated, it doesn't change anymore. + // Only the last logfile can be active. Check if it has changed. + return getLastGcResource().hasUnderlyingResourceChanged(); + } + + @Override + public void setModel(GCModel model) { + for (GCResource resource : resourcesInOrder) { + resource.setModel(model); + } + + super.setModel(model); + } + + private GCResource getLastGcResource() { + return resourcesInOrder.get(resourcesInOrder.size() - 1); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + GcResourceSeries that = (GcResourceSeries) o; + + return resourcesInOrder.equals(that.resourcesInOrder); + + } + + @Override + public int hashCode() { + return resourcesInOrder.hashCode(); + } + + @Override + public String toString() { + return "GCResourceSeries [resourceName=" + getResourceName() + ", isReload=" + isReload() + ", logger=" + getLogger() + ", model=" + getModel() + "]"; + } + + protected static String buildName(List resourcesInOrder) { + if (resourcesInOrder == null || resourcesInOrder.isEmpty()) + throw new IllegalArgumentException("At least one GCResource expected!"); + try { + + GCResource first = resourcesInOrder.get(0); + GCResource last = resourcesInOrder.get(resourcesInOrder.size() - 1); + return buildName(first.getResourceName(), last.getResourceName()); + } + catch (Exception ex) { + logger.log(Level.WARNING, "Failed to build name for GCResources. Reason: " + ex.getMessage()); + logger.log(Level.FINER, "Details: ", ex); + return resourcesInOrder.get(0).getResourceName(); + } + } + + protected static String buildName(String first, String last) { + if (first.equals(last)) + return first; + + String prefix = greatestCommonPrefix(first, last); + String firstSuffix = getSuffix(first, prefix); + String lastSuffix = getSuffix(last, prefix); + + return prefix + firstSuffix + "-" + lastSuffix; + } + + private static String getSuffix(String full, String prefix) { + int beginIndex = 0; + int indexOfPrefix = prefix.isEmpty() ? 0 : full.lastIndexOf(prefix); + if (indexOfPrefix >= 0) + beginIndex = indexOfPrefix + prefix.length(); + + String suffix = full.substring(beginIndex); + String number = suffix.replaceAll("\\D+", ""); + if (number.isEmpty()) + return suffix; + return number; + } + + private static String greatestCommonPrefix(String a, String b) { + int minLength = Math.min(a.length(), b.length()); + for (int i = 0; i < minLength; i++) { + if (a.charAt(i) != b.charAt(i)) { + return a.substring(0, i); + } + } + return a.substring(0, minLength); + } +} diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java b/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java index c5f00f96..8f7331bf 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/ActionCommands.java @@ -13,6 +13,7 @@ public enum ActionCommands { EXPORT, SHOW_LICENSE, OPEN_FILE, + OPEN_SERIES, OPEN_URL, OPEN_RECENT, OSX_FULLSCREEN, diff --git a/src/main/resources/localStrings.properties b/src/main/resources/localStrings.properties index 3565b043..17741d51 100644 --- a/src/main/resources/localStrings.properties +++ b/src/main/resources/localStrings.properties @@ -245,6 +245,8 @@ main_frame_menuitem_hint_license = license information main_frame_menuitem_hint_open_file = Opens a file +main_frame_menuitem_hint_open_series = Opens consecutive files as one file + main_frame_menuitem_hint_open_url = Opens a URL main_frame_menuitem_hint_readme = read various information about GCViewer @@ -307,6 +309,8 @@ main_frame_menuitem_mnemonic_license = L main_frame_menuitem_mnemonic_open_file = O +main_frame_menuitem_mnemonic_open_series = S + main_frame_menuitem_mnemonic_open_url = U main_frame_menuitem_mnemonic_readme = R @@ -335,6 +339,8 @@ main_frame_menuitem_mnemonic_young_memory = Y main_frame_menuitem_open_file = Open File +main_frame_menuitem_open_series = Open Series + main_frame_menuitem_open_url = Open URL main_frame_menuitem_readme = Readme diff --git a/src/main/resources/localStrings_de.properties b/src/main/resources/localStrings_de.properties index e9620a30..7c372dab 100644 --- a/src/main/resources/localStrings_de.properties +++ b/src/main/resources/localStrings_de.properties @@ -241,6 +241,8 @@ main_frame_menuitem_hint_license = Lizenz Informationen main_frame_menuitem_hint_open_file = Liest eine Datei +main_frame_menuitem_hint_open_series= \u00D6ffnet zusammenh\u00E4ngende Dateien + main_frame_menuitem_hint_open_url = \u00D6ffnet eine URL main_frame_menuitem_hint_readme = zeigt diverse wissenswerte Informationen \u00FCber GCViewer @@ -303,6 +305,7 @@ main_frame_menuitem_mnemonic_license = L main_frame_menuitem_mnemonic_open_file = \u00F6 +main_frame_menuitem_mnemonic_open_series=S main_frame_menuitem_mnemonic_open_url = U main_frame_menuitem_mnemonic_readme = R @@ -331,6 +334,8 @@ main_frame_menuitem_mnemonic_young_memory = J main_frame_menuitem_open_file = \u00D6ffne Datei +main_frame_menuitem_open_series = \u00D6ffne zusammenh\u00E4ngende Dateien + main_frame_menuitem_open_url = \u00D6ffne URL main_frame_menuitem_readme = Readme-Datei diff --git a/src/main/resources/localStrings_fr.properties b/src/main/resources/localStrings_fr.properties index 07f9112e..d7958386 100644 --- a/src/main/resources/localStrings_fr.properties +++ b/src/main/resources/localStrings_fr.properties @@ -303,6 +303,7 @@ main_frame_menuitem_mnemonic_license = L main_frame_menuitem_mnemonic_open_file = O +main_frame_menuitem_mnemonic_open_series=S main_frame_menuitem_mnemonic_open_url = U main_frame_menuitem_mnemonic_readme = R diff --git a/src/main/resources/localStrings_sv.properties b/src/main/resources/localStrings_sv.properties index 9a6cf15c..43410263 100644 --- a/src/main/resources/localStrings_sv.properties +++ b/src/main/resources/localStrings_sv.properties @@ -303,6 +303,7 @@ main_frame_menuitem_mnemonic_license = L main_frame_menuitem_mnemonic_open_file = O +main_frame_menuitem_mnemonic_open_series=S main_frame_menuitem_mnemonic_open_url = U main_frame_menuitem_mnemonic_readme = R diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactoryTest.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactoryTest.java new file mode 100644 index 00000000..8b484efc --- /dev/null +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderFactoryTest.java @@ -0,0 +1,42 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; + +/** + * @author martin.geldmacher + */ +@RunWith(MockitoJUnitRunner.class) +public class GCModelLoaderFactoryTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void createFor_GcResourceFile() throws Exception { + GCResource gcResource = mock(GcResourceFile.class); + assertThat(GCModelLoaderFactory.createFor(gcResource), instanceOf(GCModelLoaderImpl.class)); + } + + @Test + public void createFor_GcResourceSeries() throws Exception { + GCResource gcResource = mock(GcResourceSeries.class); + assertThat(GCModelLoaderFactory.createFor(gcResource), instanceOf(GCModelSeriesLoaderImpl.class)); + } + + @Test + public void createFor_GcResourceUnknown() throws Exception { + expectedException.expect(IllegalArgumentException.class); + GCResource gcResource = mock(GCResource.class); + GCModelLoaderFactory.createFor(gcResource); + } +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImplTest.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImplTest.java new file mode 100644 index 00000000..cfa1dd59 --- /dev/null +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImplTest.java @@ -0,0 +1,48 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.ctrl.GCModelLoader; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.ArrayList; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; + +public class GCModelSeriesLoaderImplTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void getGcResource() throws Exception { + ArrayList gcResourceList = new ArrayList<>(); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath())); + + GCModelLoader loader = new GCModelSeriesLoaderImpl(new GcResourceSeries(gcResourceList)); + assertThat(loader.getGcResource(), notNullValue()); + } + + @Test + public void GCModelSeriesLoaderImpl_ForEmptySeries() throws Exception { + expectedException.expect(IllegalArgumentException.class); + new GCModelSeriesLoaderImpl(new GcResourceSeries(new ArrayList<>())); + } + + @Test + public void loadGcModel() throws Exception { + ArrayList gcResourceList = new ArrayList<>(); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath())); + GCModelSeriesLoaderImpl loader = new GCModelSeriesLoaderImpl(new GcResourceSeries(gcResourceList)); + + assertThat(loader.loadGcModel(), notNullValue()); + } +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoaderTest.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoaderTest.java new file mode 100644 index 00000000..d0da502c --- /dev/null +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/GcSeriesLoaderTest.java @@ -0,0 +1,187 @@ +package com.tagtraum.perf.gcviewer.ctrl.impl; + +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.imp.DataReaderException; +import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; +import com.tagtraum.perf.gcviewer.model.*; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +@RunWith(MockitoJUnitRunner.class) +public class GcSeriesLoaderTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + private GcSeriesLoader loader; + private DataReaderFacade dataReader; + + @Before + public void setUp() throws Exception { + dataReader = new DataReaderFacade(); + loader = new GcSeriesLoader(dataReader); + } + + @Test + public void merge_EmptyFile() throws Exception { + expectedException.expect(IllegalArgumentException.class); + loader.load(new GcResourceSeries(new ArrayList<>())); + } + + @Test + public void merge_OneFile() throws Exception { + GCResource input = getGcResource("SampleSun1_8_0Series-Part1.txt"); + GCModel expectedModel = createModel(input); + + List resources = new ArrayList<>(); + resources.add(input); + GcResourceSeries series = new GcResourceSeries(resources); + GCModel result = loader.load(series); + + assertThat(result, is(expectedModel)); + } + + @Test + public void merge_FilesInRightOrder() throws Exception { + GCResource file1 = getGcResource("SampleSun1_8_0Series-Part1.txt"); + GCResource file2 = getGcResource("SampleSun1_8_0Series-Part2.txt"); + GCResource file3 = getGcResource("SampleSun1_8_0Series-Part3.txt"); + GCResource file4 = getGcResource("SampleSun1_8_0Series-Part4.txt"); + GCResource file5 = getGcResource("SampleSun1_8_0Series-Part5.txt"); + GCResource file6 = getGcResource("SampleSun1_8_0Series-Part6.txt"); + GCResource file7 = getGcResource("SampleSun1_8_0Series-Part7.txt"); + GCResource expectedResult = getGcResource("SampleSun1_8_0Series-ManuallyMerged.txt"); + GCModel expectedModel = createModel(expectedResult); + + List resources = new ArrayList<>(); + resources.add(file1); + resources.add(file2); + resources.add(file3); + resources.add(file4); + resources.add(file5); + resources.add(file6); + resources.add(file7); + GcResourceSeries series = new GcResourceSeries(resources); + GCModel result = loader.load(series); + + assertThat(result, is(expectedModel)); + } + + @Test + public void merge_FilesInWrongOrder() throws Exception { + GCResource file1 = getGcResource("SampleSun1_8_0Series-Part1.txt"); + GCResource file2 = getGcResource("SampleSun1_8_0Series-Part2.txt"); + GCResource file3 = getGcResource("SampleSun1_8_0Series-Part3.txt"); + GCResource file4 = getGcResource("SampleSun1_8_0Series-Part4.txt"); + GCResource file5 = getGcResource("SampleSun1_8_0Series-Part5.txt"); + GCResource file6 = getGcResource("SampleSun1_8_0Series-Part6.txt"); + GCResource file7 = getGcResource("SampleSun1_8_0Series-Part7.txt"); + GCResource expectedResult = getGcResource("SampleSun1_8_0Series-ManuallyMerged.txt"); + GCModel expectedModel = createModel(expectedResult); + + List resources = new ArrayList<>(); + resources.add(file4); + resources.add(file3); + resources.add(file6); + resources.add(file1); + resources.add(file7); + resources.add(file2); + resources.add(file5); + GcResourceSeries series = new GcResourceSeries(resources); + GCModel result = loader.load(series); + + assertThat(result, is(expectedModel)); + } + + @Test + public void getCreationDate_WhenDateStampIsAvailable() throws Exception { + GCModel withDatestamp = new GCModel(); + GCEvent event = new GCEvent(1.0, 0, 0, 0, 0.0, AbstractGCEvent.Type.GC); + ZonedDateTime datestamp = ZonedDateTime.now(); + event.setDateStamp(datestamp); + withDatestamp.add(event); + + assertThat(loader.getCreationDate(withDatestamp), is(new GcSeriesLoader.GcDateStamp(datestamp))); + } + + @Test + public void getCreationDate_WhenTimeStampIsAvailable() throws Exception { + GCModel withTimestamp = new GCModel(); + double timestamp = 13.37; + GCEvent event = new GCEvent(timestamp, 0, 0, 0, 0.0, AbstractGCEvent.Type.GC); + withTimestamp.add(event); + + assertThat(loader.getCreationDate(withTimestamp), is(new GcSeriesLoader.GcTimeStamp(timestamp))); + } + + @Test + public void getCreationDate_WhenNeitherDateNorTimestampIsAvailable() throws Exception { + GCModel withoutDateOrTimestamp = new GCModel(); + File file = temporaryFolder.newFile(); + withoutDateOrTimestamp.setURL(file.toURI().toURL()); + + // precision is millis, not nanos, i.e. Instant can't be used directly + ZonedDateTime expectedTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(Files.readAttributes(file.toPath(), BasicFileAttributes.class).creationTime().toMillis()), ZoneId.systemDefault()); + assertThat(loader.getCreationDate(withoutDateOrTimestamp), is(new GcSeriesLoader.GcDateStamp(expectedTime))); + } + + @Test + public void getFirstDateStampFromModel() throws Exception { + GCResource resource = getGcResource("SampleSun1_8_0Series-Part1.txt"); + GCModel model = createModel(resource); + ZonedDateTime expectedTime = ZonedDateTime.of(2016, 4, 14, 22, 30, 9, 108000000, ZoneOffset.ofHours(2)); + assertThat(loader.getFirstDateStampFromModel(model).get(), is(new GcSeriesLoader.GcDateStamp(expectedTime))); + } + + @Test + public void getDateStampFromResource() throws Exception { + GCModel model = new GCModel(); + File file = temporaryFolder.newFile(); + model.setURL(file.toURI().toURL()); + + // precision is millis, not nanos, i.e. Instant can't be used directly + ZonedDateTime expectedTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(Files.readAttributes(file.toPath(), BasicFileAttributes.class).creationTime().toMillis()), ZoneId.systemDefault()); + assertThat(loader.getCreationDateFromFile(model), is(new GcSeriesLoader.GcDateStamp(expectedTime))); + } + + @Test + public void sortResources() throws Exception { + expectedException.expect(DataReaderException.class); + + Map map = new HashMap<>(); + map.put(new GcSeriesLoader.GcDateStamp(ZonedDateTime.now()), new GCModel()); + map.put(new GcSeriesLoader.GcTimeStamp(13.37), new GCModel()); + loader.sortResources(map); + } + + private GCModel createModel(GCResource resource) throws DataReaderException { + return dataReader.loadModel(resource); + } + + private GcResourceFile getGcResource(String name) throws IOException { + return new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, name).getPath()); + } +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java index 36392b76..3a962e80 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java @@ -16,9 +16,17 @@ import java.util.ArrayList; import java.util.List; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; +import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.view.GCViewerGui; +import com.tagtraum.perf.gcviewer.view.model.GCPreferences; + /** * Unittest for main controller class of GCViewerGui ({@link GCModelLoaderControllerImpl}). * This is rather an integration test than a unittest, so if one of these tests fail, first @@ -52,6 +60,18 @@ public void openString() throws Exception { } + @Test + public void openAsSeries() throws Exception { + assertThat("number of gcdocuments before", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(0)); + ArrayList gcResourceList = new ArrayList<>(); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath())); + gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath())); + + controller.openAsSeries(gcResourceList); + assertThat("number of gcdocuments after", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); // Input files are merged -> only one file is open + } + /** * Test drag and drop action on GCViewerGui. */ diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java index b64be95d..7d7cd486 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java @@ -4,13 +4,18 @@ import com.tagtraum.perf.gcviewer.model.GCModel; import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import org.junit.Before; import org.junit.Test; import java.io.FileNotFoundException; +import java.io.IOException; import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.List; import java.util.logging.Level; +import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; /** @@ -104,4 +109,29 @@ public void loadModelFileDoesntExists() throws Exception { } } + @Test + public void testLoadModelFromSeries() throws IOException, DataReaderException { + GCResource file1 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath()); + GCResource file2 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath()); + GCResource file3 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath()); + GCResource file4 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part4.txt").getPath()); + GCResource file5 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part5.txt").getPath()); + GCResource file6 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part6.txt").getPath()); + GCResource file7 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part7.txt").getPath()); + GCResource expectedResult = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-ManuallyMerged.txt").getPath()); + GCModel expectedModel = dataReaderFacade.loadModel(expectedResult); + + List resources = new ArrayList<>(); + resources.add(file4); + resources.add(file3); + resources.add(file6); + resources.add(file1); + resources.add(file7); + resources.add(file2); + resources.add(file5); + GcResourceSeries series = new GcResourceSeries(resources); + + GCModel result = dataReaderFacade.loadModelFromSeries(series); + assertThat(result.toString(), is(expectedModel.toString())); + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/model/GcResourceSeriesTest.java b/src/test/java/com/tagtraum/perf/gcviewer/model/GcResourceSeriesTest.java new file mode 100644 index 00000000..81951478 --- /dev/null +++ b/src/test/java/com/tagtraum/perf/gcviewer/model/GcResourceSeriesTest.java @@ -0,0 +1,91 @@ +package com.tagtraum.perf.gcviewer.model; + +import com.tagtraum.perf.gcviewer.UnittestHelper; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class GcResourceSeriesTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private GcResourceSeries resourceSeries; + private List resourceList; + + @Before + public void setUp() throws Exception { + resourceList = new ArrayList<>(); + resourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath())); + resourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath())); + resourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath())); + + resourceSeries = new GcResourceSeries(resourceList); + } + + @Test + public void hasUnderlyingResourceChanged() throws Exception { + for (GCResource resource : resourceList) { + GCModel model = new GCModel(); + model.setURL(((GcResourceFile) resource).getResourceNameAsUrl()); + resource.setModel(model); + } + + assertThat(resourceSeries.hasUnderlyingResourceChanged(), is(false)); + + // Changing first resource doesn't register + resourceList.get(0).setModel(new GCModel()); + assertThat(resourceSeries.hasUnderlyingResourceChanged(), is(false)); + + // Changing last resource does register + resourceList.get(resourceList.size() - 1).setModel(new GCModel()); + assertThat(resourceSeries.hasUnderlyingResourceChanged(), is(true)); + } + + @Test + public void buildName() throws Exception { + assertThat(GcResourceSeries.buildName(resourceList), is( + UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK).getPath() + "/" + "SampleSun1_8_0Series-Part1-3")); + } + + @Test + public void buildName_ForRotatedFile() throws Exception { + assertThat(GcResourceSeries.buildName("garbageCollection.log.0", "garbageCollection.log.6.current"), is("garbageCollection.log.0-6")); + } + + @Test + public void buildName_WhenOnlyOneEntryExists() throws Exception { + resourceList = new ArrayList<>(); + GcResourceFile gcResourceFile = + new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath()); + resourceList.add(gcResourceFile); + assertThat(GcResourceSeries.buildName(resourceList), is(gcResourceFile.getResourceName())); + } + + @Test + public void buildName_WhenNoCommonPrefixExists() throws Exception { + List resources = new ArrayList<>(); + GCResource resource1 = mock(GCResource.class); + when(resource1.getResourceName()).thenReturn("abc.log"); + resources.add(resource1); + + GCResource resource2 = mock(GCResource.class); + when(resource2.getResourceName()).thenReturn("xyz.log"); + resources.add(resource2); + assertThat(GcResourceSeries.buildName(resources), is("abc.log-xyz.log")); + } + + @Test + public void buildName_WhenListIsEmpty() throws Exception { + expectedException.expect(IllegalArgumentException.class); + GcResourceSeries.buildName(new ArrayList<>()); + } +} diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-ManuallyMerged.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-ManuallyMerged.txt new file mode 100644 index 00000000..aa68a9ac --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-ManuallyMerged.txt @@ -0,0 +1,603 @@ +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9830208k free), swap 20473812k(10916924k free) +CommandLine flags: -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279621632 -XX:MaxTenuringThreshold=6 -XX:NewSize=279621632 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559239168 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:30:09.108+0200: 1.053: [GC (Allocation Failure) 1.053: [ParNew: 218496K->25704K(245760K), 0.0145305 secs] 218496K->25704K(791936K), 0.0146984 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:09.616+0200: 1.561: [GC (Allocation Failure) 1.561: [ParNew: 244200K->27249K(245760K), 0.0720052 secs] 244200K->51737K(791936K), 0.0720804 secs] [Times: user=0.39 sys=0.03, real=0.07 secs] +2016-04-14T22:30:10.444+0200: 2.388: [GC (Allocation Failure) 2.388: [ParNew: 245745K->15237K(245760K), 0.0069090 secs] 270233K->39725K(791936K), 0.0069837 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:10.981+0200: 2.925: [GC (Allocation Failure) 2.925: [ParNew: 233733K->14093K(245760K), 0.0089211 secs] 258221K->38581K(791936K), 0.0089958 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:11.343+0200: 3.287: [GC (Allocation Failure) 3.287: [ParNew: 232589K->15276K(245760K), 0.0064463 secs] 257077K->39763K(791936K), 0.0065181 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:11.927+0200: 3.871: [GC (Allocation Failure) 3.871: [ParNew: 233772K->20221K(245760K), 0.0092775 secs] 258259K->44709K(791936K), 0.0093442 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:12.876+0200: 4.821: [GC (Allocation Failure) 4.821: [ParNew: 238717K->12050K(245760K), 0.0094455 secs] 263205K->41221K(791936K), 0.0095252 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:12.886+0200: 4.830: [GC (CMS Initial Mark) [1 CMS-initial-mark: 29170K(546176K)] 45355K(791936K), 0.0017923 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:12.888+0200: 4.832: [CMS-concurrent-mark-start] +2016-04-14T22:30:12.935+0200: 4.879: [CMS-concurrent-mark: 0.044/0.047 secs] [Times: user=0.27 sys=0.02, real=0.05 secs] +2016-04-14T22:30:12.935+0200: 4.879: [CMS-concurrent-preclean-start] +2016-04-14T22:30:12.936+0200: 4.881: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:12.936+0200: 4.881: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:30:13.217+0200: 5.161: [CMS-concurrent-abortable-preclean: 0.146/0.280 secs] [Times: user=1.27 sys=0.05, real=0.28 secs] +2016-04-14T22:30:13.217+0200: 5.161: [GC (CMS Final Remark) [YG occupancy: 152796 K (245760 K)]2016-04-14T22:30:13.217+0200: 5.161: [GC (CMS Final Remark) 5.161: [ParNew: 152796K->9726K(245760K), 0.0090205 secs] 181966K->38896K(791936K), 0.0090755 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +5.170: [Rescan (parallel) , 0.0026815 secs]5.173: [weak refs processing, 0.0000261 secs]5.173: [class unloading, 0.0056168 secs]5.178: [scrub symbol table, 0.0046852 secs]5.183: [scrub string table, 0.0004777 secs][1 CMS-remark: 29170K(546176K)] 38896K(791936K), 0.0236219 secs] [Times: user=0.16 sys=0.00, real=0.02 secs] +2016-04-14T22:30:13.240+0200: 5.185: [CMS-concurrent-sweep-start] +2016-04-14T22:30:13.252+0200: 5.196: [CMS-concurrent-sweep: 0.010/0.011 secs] [Times: user=0.08 sys=0.00, real=0.01 secs] +2016-04-14T22:30:13.252+0200: 5.196: [CMS-concurrent-reset-start] +2016-04-14T22:30:13.254+0200: 5.198: [CMS-concurrent-reset: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:14.057+0200: 6.001: [GC (Allocation Failure) 6.001: [ParNew: 228222K->10667K(245760K), 0.0097156 secs] 257274K->42377K(791936K), 0.0098019 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] +2016-04-14T22:30:14.922+0200: 6.866: [GC (Allocation Failure) 6.866: [ParNew: 229163K->10064K(245760K), 0.0067733 secs] 260873K->42325K(791936K), 0.0068591 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:15.927+0200: 7.871: [GC (Allocation Failure) 7.871: [ParNew: 228560K->27264K(245760K), 0.0441992 secs] 260821K->88932K(791936K), 0.0442809 secs] [Times: user=0.28 sys=0.00, real=0.04 secs] +2016-04-14T22:30:17.343+0200: 9.287: [GC (Allocation Failure) 9.287: [ParNew: 245760K->27264K(245760K), 0.0450838 secs] 307428K->121805K(791936K), 0.0451505 secs] [Times: user=0.33 sys=0.03, real=0.05 secs] +2016-04-14T22:30:18.430+0200: 10.374: [GC (Allocation Failure) 10.374: [ParNew: 245760K->23558K(245760K), 0.0234936 secs] 340301K->142372K(791936K), 0.0235626 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:30:19.178+0200: 11.122: [GC (Allocation Failure) 11.122: [ParNew: 242054K->9219K(245760K), 0.0038721 secs] 360868K->128033K(791936K), 0.0039528 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.807+0200: 11.751: [GC (Allocation Failure) 11.752: [ParNew: 227715K->8958K(245760K), 0.0051690 secs] 346529K->127772K(791936K), 0.0052436 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:19.813+0200: 11.757: [GC (CMS Initial Mark) [1 CMS-initial-mark: 118813K(546176K)] 132109K(791936K), 0.0012955 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.814+0200: 11.758: [CMS-concurrent-mark-start] +2016-04-14T22:30:19.966+0200: 11.910: [CMS-concurrent-mark: 0.147/0.152 secs] [Times: user=0.52 sys=0.00, real=0.15 secs] +2016-04-14T22:30:19.966+0200: 11.910: [CMS-concurrent-preclean-start] +2016-04-14T22:30:19.967+0200: 11.912: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.967+0200: 11.912: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:30:20.426+0200: 12.370: [GC (Allocation Failure) 12.370: [ParNew: 227454K->8479K(245760K), 0.0052683 secs] 346268K->127293K(791936K), 0.0053458 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:20.755+0200: 12.699: [CMS-concurrent-abortable-preclean: 0.381/0.787 secs] [Times: user=1.31 sys=0.06, real=0.79 secs] +2016-04-14T22:30:20.755+0200: 12.699: [GC (CMS Final Remark) [YG occupancy: 130227 K (245760 K)]2016-04-14T22:30:20.755+0200: 12.699: [GC (CMS Final Remark) 12.699: [ParNew: 130227K->8045K(245760K), 0.0046544 secs] 249041K->126859K(791936K), 0.0047071 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +12.704: [Rescan (parallel) , 0.0017093 secs]12.706: [weak refs processing, 0.0000163 secs]12.706: [class unloading, 0.0062849 secs]12.712: [scrub symbol table, 0.0070224 secs]12.719: [scrub string table, 0.0006256 secs][1 CMS-remark: 118813K(546176K)] 126859K(791936K), 0.0215244 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] +2016-04-14T22:30:20.776+0200: 12.721: [CMS-concurrent-sweep-start] +2016-04-14T22:30:20.805+0200: 12.750: [CMS-concurrent-sweep: 0.029/0.029 secs] [Times: user=0.06 sys=0.00, real=0.03 secs] +2016-04-14T22:30:20.805+0200: 12.750: [CMS-concurrent-reset-start] +2016-04-14T22:30:20.806+0200: 12.751: [CMS-concurrent-reset: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:21.184+0200: 13.128: [GC (Allocation Failure) 13.128: [ParNew: 226541K->11933K(245760K), 0.0047612 secs] 338541K->123933K(791936K), 0.0048321 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:30:21.611+0200: 13.555: [GC (Allocation Failure) 13.555: [ParNew: 230429K->11105K(245760K), 0.0074222 secs] 342429K->125792K(791936K), 0.0075057 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:22.114+0200: 14.058: [GC (Allocation Failure) 14.058: [ParNew: 229601K->8340K(245760K), 0.0060385 secs] 344288K->123989K(791936K), 0.0061099 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:22.923+0200: 14.867: [GC (Allocation Failure) 14.867: [ParNew: 226836K->7416K(245760K), 0.0070159 secs] 342485K->124035K(791936K), 0.0070961 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:23.760+0200: 15.704: [GC (Allocation Failure) 15.704: [ParNew: 225912K->8337K(245760K), 0.0057913 secs] 342531K->125497K(791936K), 0.0058711 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:24.418+0200: 16.362: [GC (Allocation Failure) 16.362: [ParNew: 226833K->12460K(245760K), 0.0089659 secs] 343993K->129972K(791936K), 0.0090485 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:25.243+0200: 17.187: [GC (Allocation Failure) 17.187: [ParNew: 230956K->14959K(245760K), 0.0104312 secs] 348468K->133092K(791936K), 0.0105259 secs] [Times: user=0.05 sys=0.00, real=0.01 secs] +2016-04-14T22:30:25.956+0200: 17.901: [GC (Allocation Failure) 17.901: [ParNew: 233455K->17936K(245760K), 0.0094226 secs] 351588K->136405K(791936K), 0.0095001 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:26.430+0200: 18.374: [GC (Allocation Failure) 18.374: [ParNew: 236432K->21901K(245760K), 0.0125468 secs] 354901K->140803K(791936K), 0.0126210 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:26.948+0200: 18.892: [GC (Allocation Failure) 18.892: [ParNew: 240397K->17950K(245760K), 0.0146560 secs] 359299K->139457K(791936K), 0.0147646 secs] [Times: user=0.11 sys=0.02, real=0.02 secs] +2016-04-14T22:30:27.566+0200: 19.510: [GC (Allocation Failure) 19.510: [ParNew: 236446K->15283K(245760K), 0.0089300 secs] 357953K->137678K(791936K), 0.0090060 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:48.254+0200: 40.198: [GC (Allocation Failure) 40.198: [ParNew: 233779K->17470K(245760K), 0.0143560 secs] 356174K->141615K(791936K), 0.0144432 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] +2016-04-14T22:30:48.917+0200: 40.861: [GC (Allocation Failure) 40.862: [ParNew: 235966K->12231K(245760K), 0.0110489 secs] 360111K->138497K(791936K), 0.0111254 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:49.393+0200: 41.337: [GC (Allocation Failure) 41.337: [ParNew: 230727K->12480K(245760K), 0.0103244 secs] 356993K->140491K(791936K), 0.0104028 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:57.957+0200: 49.901: [GC (Allocation Failure) 49.901: [ParNew: 230821K->14895K(245760K), 0.0089006 secs] 358832K->143907K(791936K), 0.0089804 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:00.935+0200: 52.879: [GC (Allocation Failure) 52.879: [ParNew: 233391K->27264K(245760K), 0.0188233 secs] 362403K->157581K(791936K), 0.0189124 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:31:05.525+0200: 57.469: [GC (Allocation Failure) 57.469: [ParNew: 245760K->19959K(245760K), 0.0251739 secs] 376077K->165797K(791936K), 0.0252523 secs] [Times: user=0.16 sys=0.00, real=0.02 secs] +2016-04-14T22:31:08.933+0200: 60.878: [GC (Allocation Failure) 60.878: [ParNew: 238455K->14553K(245760K), 0.0079676 secs] 384293K->160392K(791936K), 0.0080450 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:31:12.924+0200: 64.869: [GC (Allocation Failure) 64.869: [ParNew: 232848K->9841K(245760K), 0.0055198 secs] 378687K->155680K(791936K), 0.0056061 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:16.960+0200: 68.904: [GC (Allocation Failure) 68.904: [ParNew: 228337K->15322K(245760K), 0.0077418 secs] 374176K->161160K(791936K), 0.0078197 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:21.117+0200: 73.061: [GC (Allocation Failure) 73.061: [ParNew: 233818K->18005K(245760K), 0.0075001 secs] 379656K->163843K(791936K), 0.0075944 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:25.162+0200: 77.106: [GC (Allocation Failure) 77.106: [ParNew: 236501K->20469K(245760K), 0.0075608 secs] 382339K->166308K(791936K), 0.0076387 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:29.360+0200: 81.304: [GC (Allocation Failure) 81.304: [ParNew: 238965K->19939K(245760K), 0.0087275 secs] 384804K->166397K(791936K), 0.0088134 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:31:33.762+0200: 85.706: [GC (Allocation Failure) 85.706: [ParNew: 238416K->12719K(245760K), 0.0112779 secs] 384874K->165752K(791936K), 0.0113647 secs] [Times: user=0.11 sys=0.02, real=0.01 secs] +2016-04-14T22:31:37.977+0200: 89.922: [GC (Allocation Failure) 89.922: [ParNew: 231215K->9204K(245760K), 0.0063138 secs] 384248K->162362K(791936K), 0.0063894 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:42.193+0200: 94.138: [GC (Allocation Failure) 94.138: [ParNew: 227700K->7012K(245760K), 0.0069767 secs] 380858K->162825K(791936K), 0.0070742 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:46.587+0200: 98.531: [GC (Allocation Failure) 98.531: [ParNew: 224894K->3437K(245760K), 0.0031919 secs] 380707K->159406K(791936K), 0.0032842 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:50.807+0200: 102.751: [GC (Allocation Failure) 102.751: [ParNew: 221933K->3581K(245760K), 0.0038287 secs] 377902K->159723K(791936K), 0.0039154 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:55.429+0200: 107.374: [GC (Allocation Failure) 107.374: [ParNew: 222077K->3963K(245760K), 0.0034396 secs] 378219K->160253K(791936K), 0.0035250 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:59.815+0200: 111.760: [GC (Allocation Failure) 111.760: [ParNew: 221879K->7461K(245760K), 0.0061374 secs] 378169K->163793K(791936K), 0.0062373 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:05.223+0200: 117.167: [GC (Allocation Failure) 117.167: [ParNew: 225826K->14672K(245760K), 0.0071684 secs] 382158K->171076K(791936K), 0.0072519 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:09.231+0200: 121.175: [GC (CMS Initial Mark) [1 CMS-initial-mark: 156404K(546176K)] 318274K(791936K), 0.0164077 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:32:09.247+0200: 121.192: [CMS-concurrent-mark-start] +2016-04-14T22:32:09.414+0200: 121.359: [CMS-concurrent-mark: 0.168/0.168 secs] [Times: user=0.34 sys=0.00, real=0.17 secs] +2016-04-14T22:32:09.415+0200: 121.359: [CMS-concurrent-preclean-start] +2016-04-14T22:32:09.417+0200: 121.362: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:32:09.417+0200: 121.362: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:32:10.991+0200: 122.935: [GC (Allocation Failure) 122.935: [ParNew: 233168K->15672K(245760K), 0.0074577 secs] 389572K->172176K(791936K), 0.0075276 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:13.941+0200: 125.885: [CMS-concurrent-abortable-preclean: 2.165/4.524 secs] [Times: user=2.56 sys=0.03, real=4.52 secs] +2016-04-14T22:32:13.941+0200: 125.885: [GC (CMS Final Remark) [YG occupancy: 130278 K (245760 K)]2016-04-14T22:32:13.941+0200: 125.885: [GC (CMS Final Remark) 125.885: [ParNew: 130278K->11066K(245760K), 0.0061300 secs] 286782K->167616K(791936K), 0.0062009 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +125.892: [Rescan (parallel) , 0.0029675 secs]125.895: [weak refs processing, 0.0000387 secs]125.895: [class unloading, 0.0174228 secs]125.912: [scrub symbol table, 0.0124708 secs]125.925: [scrub string table, 0.0009195 secs][1 CMS-remark: 156550K(546176K)] 167616K(791936K), 0.0416777 secs] [Times: user=0.03 sys=0.00, real=0.04 secs] +2016-04-14T22:32:13.982+0200: 125.927: [CMS-concurrent-sweep-start] +2016-04-14T22:32:14.057+0200: 126.001: [CMS-concurrent-sweep: 0.072/0.074 secs] [Times: user=0.11 sys=0.05, real=0.07 secs] +2016-04-14T22:32:14.057+0200: 126.001: [CMS-concurrent-reset-start] +2016-04-14T22:32:14.058+0200: 126.002: [CMS-concurrent-reset: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:32:20.812+0200: 132.756: [GC (Allocation Failure) 132.756: [ParNew: 229562K->15616K(245760K), 0.0080319 secs] 363844K->149923K(791936K), 0.0081145 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:32:28.094+0200: 140.038: [GC (Allocation Failure) 140.038: [ParNew: 233959K->12202K(245760K), 0.0052133 secs] 368267K->146522K(791936K), 0.0052958 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:32:34.589+0200: 146.533: [GC (Allocation Failure) 146.533: [ParNew: 230384K->17027K(245760K), 0.0066151 secs] 364704K->151398K(791936K), 0.0067131 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] +2016-04-14T22:32:42.443+0200: 154.387: [GC (Allocation Failure) 154.387: [ParNew: 235523K->18056K(245760K), 0.0079354 secs] 369894K->152468K(791936K), 0.0080068 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:50.946+0200: 162.891: [GC (Allocation Failure) 162.891: [ParNew: 236552K->14803K(245760K), 0.0066501 secs] 370964K->149308K(791936K), 0.0067360 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:57.222+0200: 169.166: [GC (Allocation Failure) 169.166: [ParNew: 233299K->11573K(245760K), 0.0057773 secs] 367804K->146086K(791936K), 0.0058547 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:06.953+0200: 178.898: [GC (Allocation Failure) 178.898: [ParNew: 229692K->19448K(245760K), 0.0068050 secs] 364205K->154082K(791936K), 0.0068867 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:33:12.777+0200: 184.722: [GC (Allocation Failure) 184.722: [ParNew: 237944K->23329K(245760K), 0.0091520 secs] 372578K->158309K(791936K), 0.0092682 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:33:21.509+0200: 193.454: [GC (Allocation Failure) 193.454: [ParNew: 241225K->15681K(245760K), 0.0092080 secs] 376206K->153956K(791936K), 0.0092990 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] +2016-04-14T22:33:27.883+0200: 199.827: [GC (Allocation Failure) 199.827: [ParNew: 234177K->11328K(245760K), 0.0062601 secs] 372452K->149603K(791936K), 0.0063502 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:33.945+0200: 205.889: [GC (Allocation Failure) 205.889: [ParNew: 229824K->15198K(245760K), 0.0064201 secs] 368099K->153473K(791936K), 0.0064911 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:39.733+0200: 211.677: [GC (Allocation Failure) 211.677: [ParNew: 233694K->15545K(245760K), 0.0072720 secs] 371969K->153820K(791936K), 0.0073494 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:35:55.404+0200: 347.349: [GC (Allocation Failure) 347.349: [ParNew: 234041K->11013K(245760K), 0.0035054 secs] 372316K->149288K(791936K), 0.0035814 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:37:07.025+0200: 418.970: [GC (Allocation Failure) 418.970: [ParNew: 229509K->18187K(245760K), 0.0112901 secs] 367784K->156462K(791936K), 0.0113796 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:37:08.322+0200: 420.267: [GC (Allocation Failure) 420.267: [ParNew: 236683K->12354K(245760K), 0.0215841 secs] 374958K->165970K(791936K), 0.0216564 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:37:10.425+0200: 422.369: [GC (Allocation Failure) 422.369: [ParNew: 230850K->8802K(245760K), 0.0044029 secs] 384466K->162417K(791936K), 0.0044785 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:12.206+0200: 424.150: [GC (Allocation Failure) 424.150: [ParNew: 227298K->9443K(245760K), 0.0055958 secs] 380913K->163058K(791936K), 0.0056929 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:14.826+0200: 426.770: [GC (Allocation Failure) 426.770: [ParNew: 227939K->8008K(245760K), 0.0042191 secs] 381554K->161623K(791936K), 0.0043040 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:37:17.987+0200: 429.932: [GC (Allocation Failure) 429.932: [ParNew: 226504K->6774K(245760K), 0.0034848 secs] 380119K->160389K(791936K), 0.0035576 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:19.931+0200: 431.876: [GC (Allocation Failure) 431.876: [ParNew: 225270K->9058K(245760K), 0.0052954 secs] 378885K->162673K(791936K), 0.0053686 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:22.190+0200: 434.135: [GC (Allocation Failure) 434.135: [ParNew: 227554K->6048K(245760K), 0.0049371 secs] 381169K->161621K(791936K), 0.0050234 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14 22:37:22 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.0 +2016-04-14 22:37:22 GC log file created logs/garbageCollection.log.1 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9157704k free), swap 20473812k(9756156k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:37:25.036+0200: 436.981: [GC (Allocation Failure) 436.981: [ParNew: 224544K->9414K(245760K), 0.0053560 secs] 380117K->165822K(791936K), 0.0055366 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:27.748+0200: 439.693: [GC (Allocation Failure) 439.693: [ParNew: 227910K->10721K(245760K), 0.0066371 secs] 384318K->167305K(791936K), 0.0067168 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:37:31.049+0200: 442.994: [GC (Allocation Failure) 442.994: [ParNew: 229212K->8140K(245760K), 0.0032898 secs] 385797K->164920K(791936K), 0.0033720 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:33.367+0200: 445.311: [GC (Allocation Failure) 445.311: [ParNew: 226636K->8204K(245760K), 0.0048377 secs] 383416K->165103K(791936K), 0.0049292 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:35.946+0200: 447.891: [GC (Allocation Failure) 447.891: [ParNew: 226700K->9674K(245760K), 0.0046385 secs] 383599K->166843K(791936K), 0.0047085 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:38.812+0200: 450.756: [GC (Allocation Failure) 450.756: [ParNew: 228170K->8906K(245760K), 0.0044888 secs] 385339K->166212K(791936K), 0.0045592 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:37:42.119+0200: 454.063: [GC (Allocation Failure) 454.063: [ParNew: 227402K->6247K(245760K), 0.0034583 secs] 384708K->164342K(791936K), 0.0035357 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:45.662+0200: 457.607: [GC (Allocation Failure) 457.607: [ParNew: 224743K->5870K(245760K), 0.0037382 secs] 382838K->164149K(791936K), 0.0038119 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:48.381+0200: 460.326: [GC (Allocation Failure) 460.326: [ParNew: 224366K->11363K(245760K), 0.0082353 secs] 382645K->170289K(791936K), 0.0082960 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:50.859+0200: 462.803: [GC (Allocation Failure) 462.803: [ParNew: 229859K->8067K(245760K), 0.0044809 secs] 388785K->167183K(791936K), 0.0045588 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:37:55.315+0200: 467.260: [GC (Allocation Failure) 467.260: [ParNew: 226563K->6586K(245760K), 0.0044323 secs] 385679K->165875K(791936K), 0.0045438 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:58.106+0200: 470.050: [GC (Allocation Failure) 470.050: [ParNew: 225082K->3777K(245760K), 0.0043610 secs] 384371K->163268K(791936K), 0.0044239 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:01.600+0200: 473.544: [GC (Allocation Failure) 473.544: [ParNew: 222273K->10619K(245760K), 0.0059452 secs] 381764K->170426K(791936K), 0.0060129 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:05.156+0200: 477.100: [GC (Allocation Failure) 477.100: [ParNew: 229115K->5679K(245760K), 0.0040484 secs] 388922K->165637K(791936K), 0.0041142 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:38:09.035+0200: 480.979: [GC (Allocation Failure) 480.979: [ParNew: 224175K->5234K(245760K), 0.0035893 secs] 384133K->165360K(791936K), 0.0036957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:12.052+0200: 483.996: [GC (Allocation Failure) 483.996: [ParNew: 223730K->3627K(245760K), 0.0038506 secs] 383856K->163989K(791936K), 0.0039140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:15.386+0200: 487.330: [GC (Allocation Failure) 487.330: [ParNew: 221982K->4698K(245760K), 0.0034564 secs] 382344K->165237K(791936K), 0.0035310 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:19.035+0200: 490.979: [GC (Allocation Failure) 490.979: [ParNew: 223120K->4870K(245760K), 0.0042369 secs] 383660K->165675K(791936K), 0.0043157 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:21.884+0200: 493.829: [GC (Allocation Failure) 493.829: [ParNew: 223366K->5956K(245760K), 0.0040848 secs] 384171K->166969K(791936K), 0.0041510 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:25.454+0200: 497.398: [GC (Allocation Failure) 497.398: [ParNew: 224428K->4146K(245760K), 0.0039686 secs] 385441K->165447K(791936K), 0.0040605 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:38:28.309+0200: 500.253: [GC (Allocation Failure) 500.253: [ParNew: 222642K->7461K(245760K), 0.0047188 secs] 383943K->168949K(791936K), 0.0047887 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:38:32.980+0200: 504.924: [GC (Allocation Failure) 504.924: [ParNew: 225428K->5503K(245760K), 0.0035147 secs] 386916K->167234K(791936K), 0.0035945 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:35.379+0200: 507.323: [GC (Allocation Failure) 507.323: [ParNew: 223999K->4657K(245760K), 0.0034340 secs] 385730K->166681K(791936K), 0.0035002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:39.220+0200: 511.164: [GC (Allocation Failure) 511.164: [ParNew: 223153K->9001K(245760K), 0.0057689 secs] 385177K->171384K(791936K), 0.0058435 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:38:42.542+0200: 514.486: [GC (Allocation Failure) 514.486: [ParNew: 227497K->7094K(245760K), 0.0044258 secs] 389880K->169788K(791936K), 0.0045140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:46.531+0200: 518.475: [GC (Allocation Failure) 518.475: [ParNew: 225129K->8581K(245760K), 0.0044431 secs] 387823K->171571K(791936K), 0.0045331 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:38:49.341+0200: 521.285: [GC (Allocation Failure) 521.285: [ParNew: 227077K->10405K(245760K), 0.0054465 secs] 390067K->173768K(791936K), 0.0055296 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:38:52.928+0200: 524.872: [GC (Allocation Failure) 524.872: [ParNew: 228901K->12935K(245760K), 0.0065288 secs] 392264K->176620K(791936K), 0.0066091 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:55.832+0200: 527.776: [GC (Allocation Failure) 527.776: [ParNew: 231431K->13010K(245760K), 0.0057740 secs] 395116K->176895K(791936K), 0.0058412 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:58.274+0200: 530.218: [GC (Allocation Failure) 530.218: [ParNew: 231506K->5623K(245760K), 0.0038511 secs] 395391K->169696K(791936K), 0.0039425 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:00.796+0200: 532.741: [GC (Allocation Failure) 532.741: [ParNew: 224119K->8959K(245760K), 0.0055076 secs] 388192K->173445K(791936K), 0.0055800 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:39:03.043+0200: 534.988: [GC (Allocation Failure) 534.988: [ParNew: 227455K->7190K(245760K), 0.0037550 secs] 391941K->171918K(791936K), 0.0038259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:06.478+0200: 538.422: [GC (Allocation Failure) 538.423: [ParNew: 225686K->8085K(245760K), 0.0061346 secs] 390414K->173367K(791936K), 0.0062279 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:08.854+0200: 540.799: [GC (Allocation Failure) 540.799: [ParNew: 226581K->7617K(245760K), 0.0045074 secs] 391863K->173398K(791936K), 0.0045672 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:11.134+0200: 543.079: [GC (Allocation Failure) 543.079: [ParNew: 226113K->5413K(245760K), 0.0034111 secs] 391894K->171279K(791936K), 0.0034900 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:13.367+0200: 545.312: [GC (Allocation Failure) 545.312: [ParNew: 223909K->7626K(245760K), 0.0070089 secs] 389775K->173624K(791936K), 0.0071013 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:15.786+0200: 547.730: [GC (Allocation Failure) 547.730: [ParNew: 226122K->5650K(245760K), 0.0037344 secs] 392120K->171840K(791936K), 0.0038025 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:18.046+0200: 549.991: [GC (Allocation Failure) 549.991: [ParNew: 224146K->6509K(245760K), 0.0046241 secs] 390336K->172766K(791936K), 0.0046843 secs] [Times: user=0.08 sys=0.00, real=0.01 secs] +2016-04-14T22:39:21.004+0200: 552.948: [GC (Allocation Failure) 552.948: [ParNew: 225005K->4942K(245760K), 0.0035646 secs] 391262K->171436K(791936K), 0.0036323 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:23.251+0200: 555.195: [GC (Allocation Failure) 555.195: [ParNew: 223438K->7667K(245760K), 0.0042336 secs] 389932K->174245K(791936K), 0.0043101 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:25.925+0200: 557.869: [GC (Allocation Failure) 557.869: [ParNew: 226163K->5507K(245760K), 0.0027300 secs] 392741K->172154K(791936K), 0.0027981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:28.017+0200: 559.962: [GC (Allocation Failure) 559.962: [ParNew: 224003K->5888K(245760K), 0.0045527 secs] 390650K->172690K(791936K), 0.0046222 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:30.554+0200: 562.498: [GC (Allocation Failure) 562.498: [ParNew: 224384K->7720K(245760K), 0.0054139 secs] 391186K->174728K(791936K), 0.0055030 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:33.392+0200: 565.336: [GC (Allocation Failure) 565.336: [ParNew: 226216K->5736K(245760K), 0.0034340 secs] 393224K->172789K(791936K), 0.0035478 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:35.833+0200: 567.778: [GC (Allocation Failure) 567.778: [ParNew: 224232K->4684K(245760K), 0.0025831 secs] 391285K->172417K(791936K), 0.0026559 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:38.305+0200: 570.249: [GC (Allocation Failure) 570.249: [ParNew: 223171K->3401K(245760K), 0.0028625 secs] 390904K->171268K(791936K), 0.0029442 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:40.753+0200: 572.698: [GC (Allocation Failure) 572.698: [ParNew: 221897K->5123K(245760K), 0.0040894 secs] 389764K->173077K(791936K), 0.0041520 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:43.482+0200: 575.426: [GC (Allocation Failure) 575.426: [ParNew: 223619K->7420K(245760K), 0.0048755 secs] 391573K->175424K(791936K), 0.0049520 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:46.032+0200: 577.976: [GC (Allocation Failure) 577.976: [ParNew: 225916K->7578K(245760K), 0.0046880 secs] 393920K->175741K(791936K), 0.0047556 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:48.305+0200: 580.249: [GC (Allocation Failure) 580.249: [ParNew: 226074K->6064K(245760K), 0.0038226 secs] 394237K->174286K(791936K), 0.0039000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:50.984+0200: 582.929: [GC (Allocation Failure) 582.929: [ParNew: 224560K->6172K(245760K), 0.0038161 secs] 392782K->174655K(791936K), 0.0038949 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:39:53.170+0200: 585.114: [GC (Allocation Failure) 585.114: [ParNew: 224668K->5406K(245760K), 0.0035194 secs] 393151K->174154K(791936K), 0.0035861 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:55.563+0200: 587.508: [GC (Allocation Failure) 587.508: [ParNew: 223902K->8579K(245760K), 0.0042089 secs] 392650K->177412K(791936K), 0.0042751 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:39:57.893+0200: 589.838: [GC (Allocation Failure) 589.838: [ParNew: 227075K->5537K(245760K), 0.0029358 secs] 395908K->174435K(791936K), 0.0030099 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:59.891+0200: 591.836: [GC (Allocation Failure) 591.836: [ParNew: 224033K->2822K(245760K), 0.0027977 secs] 392931K->171886K(791936K), 0.0028746 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:40:02.539+0200: 594.483: [GC (Allocation Failure) 594.484: [ParNew: 221318K->4828K(245760K), 0.0040932 secs] 390382K->173991K(791936K), 0.0041762 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:05.162+0200: 597.107: [GC (Allocation Failure) 597.107: [ParNew: 223324K->7778K(245760K), 0.0057395 secs] 392487K->177054K(791936K), 0.0058697 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:07.684+0200: 599.629: [GC (Allocation Failure) 599.629: [ParNew: 225859K->5677K(245760K), 0.0025700 secs] 395136K->175008K(791936K), 0.0026325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:09.891+0200: 601.835: [GC (Allocation Failure) 601.835: [ParNew: 224173K->4139K(245760K), 0.0027813 secs] 393504K->173508K(791936K), 0.0028663 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:40:12.168+0200: 604.113: [GC (Allocation Failure) 604.113: [ParNew: 222635K->2981K(245760K), 0.0029157 secs] 392004K->172433K(791936K), 0.0029759 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:15.103+0200: 607.047: [GC (Allocation Failure) 607.047: [ParNew: 221311K->2340K(245760K), 0.0026092 secs] 390763K->171987K(791936K), 0.0026950 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:18.131+0200: 610.075: [GC (Allocation Failure) 610.075: [ParNew: 220836K->2982K(245760K), 0.0028779 secs] 390483K->172689K(791936K), 0.0029456 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:21.346+0200: 613.290: [GC (Allocation Failure) 613.290: [ParNew: 221478K->4619K(245760K), 0.0037881 secs] 391185K->174373K(791936K), 0.0038525 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:23.988+0200: 615.932: [GC (Allocation Failure) 615.932: [ParNew: 223115K->7632K(245760K), 0.0055011 secs] 392869K->177487K(791936K), 0.0055706 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:26.572+0200: 618.517: [GC (Allocation Failure) 618.517: [ParNew: 226128K->6262K(245760K), 0.0032880 secs] 395983K->176217K(791936K), 0.0033734 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:28.531+0200: 620.476: [GC (Allocation Failure) 620.476: [ParNew: 224758K->5992K(245760K), 0.0045826 secs] 394713K->176079K(791936K), 0.0046507 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:40:30.963+0200: 622.908: [GC (Allocation Failure) 622.908: [ParNew: 224488K->7154K(245760K), 0.0050677 secs] 394575K->177311K(791936K), 0.0051414 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:33.949+0200: 625.893: [GC (Allocation Failure) 625.893: [ParNew: 225650K->5471K(245760K), 0.0037246 secs] 395807K->175692K(791936K), 0.0037997 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:36.634+0200: 628.578: [GC (Allocation Failure) 628.578: [ParNew: 223967K->7978K(245760K), 0.0044790 secs] 394188K->178348K(791936K), 0.0045448 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:39.084+0200: 631.028: [GC (Allocation Failure) 631.028: [ParNew: 226474K->5528K(245760K), 0.0036290 secs] 396844K->176020K(791936K), 0.0036948 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:42.181+0200: 634.126: [GC (Allocation Failure) 634.126: [ParNew: 224024K->3713K(245760K), 0.0033608 secs] 394516K->174412K(791936K), 0.0034293 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:44.460+0200: 636.405: [GC (Allocation Failure) 636.405: [ParNew: 222209K->3674K(245760K), 0.0033668 secs] 392908K->174513K(791936K), 0.0034321 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:47.236+0200: 639.180: [GC (Allocation Failure) 639.180: [ParNew: 222083K->2755K(245760K), 0.0032371 secs] 392922K->173678K(791936K), 0.0034083 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:40:50.171+0200: 642.115: [GC (Allocation Failure) 642.115: [ParNew: 221251K->8190K(245760K), 0.0059107 secs] 392174K->179202K(791936K), 0.0059998 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:40:52.675+0200: 644.620: [GC (Allocation Failure) 644.620: [ParNew: 226638K->7518K(245760K), 0.0034988 secs] 397651K->178598K(791936K), 0.0035744 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:55.301+0200: 647.245: [GC (Allocation Failure) 647.245: [ParNew: 226014K->5297K(245760K), 0.0034111 secs] 397094K->176505K(791936K), 0.0034774 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:57.756+0200: 649.701: [GC (Allocation Failure) 649.701: [ParNew: 223793K->9664K(245760K), 0.0061328 secs] 395001K->181033K(791936K), 0.0061920 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:00.696+0200: 652.640: [GC (Allocation Failure) 652.640: [ParNew: 228160K->5738K(245760K), 0.0030309 secs] 399529K->177173K(791936K), 0.0030995 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:03.932+0200: 655.876: [GC (Allocation Failure) 655.876: [ParNew: 224234K->4818K(245760K), 0.0035422 secs] 395669K->176385K(791936K), 0.0036071 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:07.148+0200: 659.092: [GC (Allocation Failure) 659.092: [ParNew: 223314K->3752K(245760K), 0.0029059 secs] 394881K->175445K(791936K), 0.0029759 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:10.032+0200: 661.977: [GC (Allocation Failure) 661.977: [ParNew: 222248K->3172K(245760K), 0.0025868 secs] 393941K->174954K(791936K), 0.0026638 secs] [Times: user=0.06 sys=0.02, real=0.00 secs] +2016-04-14T22:41:12.414+0200: 664.358: [GC (Allocation Failure) 664.358: [ParNew: 221668K->4124K(245760K), 0.0037433 secs] 393450K->175960K(791936K), 0.0038273 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:14.820+0200: 666.764: [GC (Allocation Failure) 666.764: [ParNew: 222620K->4404K(245760K), 0.0039084 secs] 394456K->176327K(791936K), 0.0040195 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:17.459+0200: 669.403: [GC (Allocation Failure) 669.404: [ParNew: 222900K->3492K(245760K), 0.0029124 secs] 394823K->175458K(791936K), 0.0029749 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:19.833+0200: 671.777: [GC (Allocation Failure) 671.777: [ParNew: 221988K->7545K(245760K), 0.0045546 secs] 393954K->179588K(791936K), 0.0046259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:22.702+0200: 674.646: [GC (Allocation Failure) 674.646: [ParNew: 226041K->5724K(245760K), 0.0040017 secs] 398084K->177893K(791936K), 0.0040685 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:25.118+0200: 677.062: [GC (Allocation Failure) 677.062: [ParNew: 224220K->5929K(245760K), 0.0035133 secs] 396389K->178146K(791936K), 0.0035768 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:27.339+0200: 679.284: [GC (Allocation Failure) 679.284: [ParNew: 224425K->7742K(245760K), 0.0057269 secs] 396642K->180073K(791936K), 0.0058141 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:29.650+0200: 681.595: [GC (Allocation Failure) 681.595: [ParNew: 226238K->6468K(245760K), 0.0040129 secs] 398569K->178853K(791936K), 0.0040922 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:31.615+0200: 683.559: [GC (Allocation Failure) 683.559: [ParNew: 224964K->5614K(245760K), 0.0027300 secs] 397349K->178085K(791936K), 0.0027986 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:34.359+0200: 686.303: [GC (Allocation Failure) 686.303: [ParNew: 224110K->3983K(245760K), 0.0033225 secs] 396581K->176663K(791936K), 0.0034027 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:41:37.920+0200: 689.864: [GC (Allocation Failure) 689.864: [ParNew: 222479K->4023K(245760K), 0.0028266 secs] 395159K->176799K(791936K), 0.0029064 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:40.506+0200: 692.450: [GC (Allocation Failure) 692.450: [ParNew: 222519K->3455K(245760K), 0.0030225 secs] 395295K->176288K(791936K), 0.0030832 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:41:41 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.1 +2016-04-14 22:41:41 GC log file created logs/garbageCollection.log.2 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9123052k free), swap 20473812k(9799988k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:41:43.728+0200: 695.673: [GC (Allocation Failure) 695.673: [ParNew: 221951K->7124K(245760K), 0.0058062 secs] 394784K->180012K(791936K), 0.0059938 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:46.127+0200: 698.072: [GC (Allocation Failure) 698.072: [ParNew: 225620K->4991K(245760K), 0.0030253 secs] 398508K->177993K(791936K), 0.0030832 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:48.685+0200: 700.630: [GC (Allocation Failure) 700.630: [ParNew: 223487K->5368K(245760K), 0.0042355 secs] 396489K->178793K(791936K), 0.0043045 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:52.648+0200: 704.592: [GC (Allocation Failure) 704.592: [ParNew: 223864K->6019K(245760K), 0.0048191 secs] 397289K->179605K(791936K), 0.0049021 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:56.360+0200: 708.304: [GC (Allocation Failure) 708.304: [ParNew: 224515K->4943K(245760K), 0.0031196 secs] 398101K->178571K(791936K), 0.0031900 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:59.467+0200: 711.412: [GC (Allocation Failure) 711.412: [ParNew: 223224K->4605K(245760K), 0.0039868 secs] 396852K->178314K(791936K), 0.0040601 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:42:02.793+0200: 714.738: [GC (Allocation Failure) 714.738: [ParNew: 223101K->7488K(245760K), 0.0051727 secs] 396810K->181278K(791936K), 0.0052380 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] +2016-04-14T22:42:05.177+0200: 717.122: [GC (Allocation Failure) 717.122: [ParNew: 225984K->5471K(245760K), 0.0035889 secs] 399774K->179367K(791936K), 0.0036621 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:08.046+0200: 719.991: [GC (Allocation Failure) 719.991: [ParNew: 223967K->4630K(245760K), 0.0032343 secs] 397863K->178626K(791936K), 0.0032973 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:11.388+0200: 723.333: [GC (Allocation Failure) 723.333: [ParNew: 223126K->4415K(245760K), 0.0040078 secs] 397122K->178923K(791936K), 0.0040797 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:14.750+0200: 726.694: [GC (Allocation Failure) 726.694: [ParNew: 222490K->5052K(245760K), 0.0047967 secs] 396999K->180026K(791936K), 0.0048746 secs] [Times: user=0.11 sys=0.02, real=0.01 secs] +2016-04-14T22:42:17.907+0200: 729.851: [GC (Allocation Failure) 729.851: [ParNew: 223548K->5681K(245760K), 0.0042481 secs] 398522K->180966K(791936K), 0.0043241 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:42:20.103+0200: 732.047: [GC (Allocation Failure) 732.047: [ParNew: 224177K->3480K(245760K), 0.0032558 secs] 399462K->178875K(791936K), 0.0033197 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:23.214+0200: 735.158: [GC (Allocation Failure) 735.158: [ParNew: 221976K->5608K(245760K), 0.0039752 secs] 397371K->181066K(791936K), 0.0040423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:26.442+0200: 738.387: [GC (Allocation Failure) 738.387: [ParNew: 224104K->5021K(245760K), 0.0035795 secs] 399562K->180577K(791936K), 0.0037237 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:29.233+0200: 741.177: [GC (Allocation Failure) 741.177: [ParNew: 223517K->5152K(245760K), 0.0044874 secs] 399073K->180768K(791936K), 0.0045513 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:42:31.265+0200: 743.209: [GC (Allocation Failure) 743.209: [ParNew: 223648K->6752K(245760K), 0.0042616 secs] 399264K->182631K(791936K), 0.0043404 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:33.440+0200: 745.385: [GC (Allocation Failure) 745.385: [ParNew: 225248K->5753K(245760K), 0.0043124 secs] 401127K->181753K(791936K), 0.0043927 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:36.018+0200: 747.962: [GC (Allocation Failure) 747.962: [ParNew: 224249K->6526K(245760K), 0.0040311 secs] 400249K->182663K(791936K), 0.0041006 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:38.361+0200: 750.305: [GC (Allocation Failure) 750.305: [ParNew: 225022K->8935K(245760K), 0.0045723 secs] 401159K->185402K(791936K), 0.0046801 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:41.216+0200: 753.161: [GC (Allocation Failure) 753.161: [ParNew: 227431K->6610K(245760K), 0.0043054 secs] 403898K->183470K(791936K), 0.0043731 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:42:44.007+0200: 755.951: [GC (Allocation Failure) 755.951: [ParNew: 225106K->8492K(245760K), 0.0056406 secs] 401966K->185500K(791936K), 0.0057087 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:42:46.255+0200: 758.199: [GC (Allocation Failure) 758.199: [ParNew: 226988K->6509K(245760K), 0.0044892 secs] 403996K->183578K(791936K), 0.0045564 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:48.538+0200: 760.483: [GC (Allocation Failure) 760.483: [ParNew: 224857K->6535K(245760K), 0.0044958 secs] 401927K->183751K(791936K), 0.0045765 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:50.672+0200: 762.616: [GC (Allocation Failure) 762.616: [ParNew: 225031K->7192K(245760K), 0.0043656 secs] 402247K->184491K(791936K), 0.0044393 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:42:52.972+0200: 764.917: [GC (Allocation Failure) 764.917: [ParNew: 225688K->7737K(245760K), 0.0053878 secs] 402987K->185100K(791936K), 0.0054885 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:42:55.134+0200: 767.079: [GC (Allocation Failure) 767.079: [ParNew: 226233K->5607K(245760K), 0.0038525 secs] 403596K->183024K(791936K), 0.0039159 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:57.983+0200: 769.928: [GC (Allocation Failure) 769.928: [ParNew: 224103K->7258K(245760K), 0.0040507 secs] 401520K->184727K(791936K), 0.0041338 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:59.783+0200: 771.728: [GC (Allocation Failure) 771.728: [ParNew: 225754K->8193K(245760K), 0.0042303 secs] 403223K->185715K(791936K), 0.0042886 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:01.771+0200: 773.716: [GC (Allocation Failure) 773.716: [ParNew: 226208K->5693K(245760K), 0.0031560 secs] 403729K->183418K(791936K), 0.0032180 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:04.023+0200: 775.968: [GC (Allocation Failure) 775.968: [ParNew: 224189K->4288K(245760K), 0.0037774 secs] 401914K->182215K(791936K), 0.0038618 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:06.413+0200: 778.358: [GC (Allocation Failure) 778.358: [ParNew: 222784K->5209K(245760K), 0.0041697 secs] 400711K->183201K(791936K), 0.0042261 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:08.660+0200: 780.604: [GC (Allocation Failure) 780.604: [ParNew: 223705K->6459K(245760K), 0.0059294 secs] 401697K->184583K(791936K), 0.0060558 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:11.564+0200: 783.508: [GC (Allocation Failure) 783.508: [ParNew: 224781K->4251K(245760K), 0.0031681 secs] 402905K->182442K(791936K), 0.0032530 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:14.700+0200: 786.645: [GC (Allocation Failure) 786.645: [ParNew: 222747K->4212K(245760K), 0.0040978 secs] 400938K->182458K(791936K), 0.0041767 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:43:17.356+0200: 789.301: [GC (Allocation Failure) 789.301: [ParNew: 222708K->3534K(245760K), 0.0027160 secs] 400954K->181858K(791936K), 0.0027753 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:19.784+0200: 791.728: [GC (Allocation Failure) 791.728: [ParNew: 222030K->5538K(245760K), 0.0040293 secs] 400354K->183967K(791936K), 0.0041039 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:22.224+0200: 794.168: [GC (Allocation Failure) 794.168: [ParNew: 224034K->8810K(245760K), 0.0060777 secs] 402463K->187289K(791936K), 0.0061547 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:24.914+0200: 796.859: [GC (Allocation Failure) 796.859: [ParNew: 227306K->6883K(245760K), 0.0029446 secs] 405785K->185516K(791936K), 0.0030519 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:27.176+0200: 799.120: [GC (Allocation Failure) 799.120: [ParNew: 225379K->5976K(245760K), 0.0046493 secs] 404012K->184690K(791936K), 0.0047332 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:29.844+0200: 801.788: [GC (Allocation Failure) 801.788: [ParNew: 224472K->6112K(245760K), 0.0036421 secs] 403186K->184982K(791936K), 0.0037148 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:32.409+0200: 804.354: [GC (Allocation Failure) 804.354: [ParNew: 224608K->5346K(245760K), 0.0040344 secs] 403478K->184472K(791936K), 0.0041072 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:34.376+0200: 806.320: [GC (Allocation Failure) 806.320: [ParNew: 223842K->5838K(245760K), 0.0036747 secs] 402968K->185059K(791936K), 0.0037531 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:36.871+0200: 808.815: [GC (Allocation Failure) 808.816: [ParNew: 224334K->6481K(245760K), 0.0046236 secs] 403555K->185788K(791936K), 0.0047141 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:38.981+0200: 810.925: [GC (Allocation Failure) 810.926: [ParNew: 224977K->8474K(245760K), 0.0051022 secs] 404284K->187876K(791936K), 0.0051774 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] +2016-04-14T22:43:41.950+0200: 813.895: [GC (Allocation Failure) 813.895: [ParNew: 226970K->10217K(245760K), 0.0052366 secs] 406372K->189752K(791936K), 0.0053047 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:45.095+0200: 817.039: [GC (Allocation Failure) 817.039: [ParNew: 228713K->7498K(245760K), 0.0049231 secs] 408248K->187077K(791936K), 0.0049898 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:43:47.402+0200: 819.346: [GC (Allocation Failure) 819.346: [ParNew: 225994K->6775K(245760K), 0.0041179 secs] 405573K->186555K(791936K), 0.0042000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:49.439+0200: 821.384: [GC (Allocation Failure) 821.384: [ParNew: 225271K->4916K(245760K), 0.0034881 secs] 405051K->184778K(791936K), 0.0035632 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:51.602+0200: 823.546: [GC (Allocation Failure) 823.546: [ParNew: 223412K->4459K(245760K), 0.0032385 secs] 403274K->184451K(791936K), 0.0033038 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:54.376+0200: 826.320: [GC (Allocation Failure) 826.320: [ParNew: 222955K->3413K(245760K), 0.0039112 secs] 402947K->183494K(791936K), 0.0040022 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:56.805+0200: 828.750: [GC (Allocation Failure) 828.750: [ParNew: 221909K->6555K(245760K), 0.0052571 secs] 401990K->186983K(791936K), 0.0053308 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:59.390+0200: 831.335: [GC (Allocation Failure) 831.335: [ParNew: 225051K->4663K(245760K), 0.0031560 secs] 405479K->185346K(791936K), 0.0032161 secs] [Times: user=0.11 sys=0.02, real=0.00 secs] +2016-04-14T22:44:01.886+0200: 833.830: [GC (Allocation Failure) 833.830: [ParNew: 223159K->3108K(245760K), 0.0031420 secs] 403842K->183840K(791936K), 0.0032194 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:04.354+0200: 836.299: [GC (Allocation Failure) 836.299: [ParNew: 221604K->5038K(245760K), 0.0036029 secs] 402336K->185859K(791936K), 0.0036850 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:06.743+0200: 838.687: [GC (Allocation Failure) 838.687: [ParNew: 223534K->6143K(245760K), 0.0031984 secs] 404355K->187076K(791936K), 0.0032763 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:08.791+0200: 840.736: [GC (Allocation Failure) 840.736: [ParNew: 224639K->7169K(245760K), 0.0045415 secs] 405572K->188191K(791936K), 0.0046250 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:44:10.967+0200: 842.912: [GC (Allocation Failure) 842.912: [ParNew: 225665K->5028K(245760K), 0.0032175 secs] 406687K->186158K(791936K), 0.0032824 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:44:13.858+0200: 845.802: [GC (Allocation Failure) 845.802: [ParNew: 223524K->4129K(245760K), 0.0031793 secs] 404654K->185373K(791936K), 0.0032605 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:44:17.685+0200: 849.630: [GC (Allocation Failure) 849.630: [ParNew: 222625K->4118K(245760K), 0.0030799 secs] 403869K->185531K(791936K), 0.0031625 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:20.800+0200: 852.745: [GC (Allocation Failure) 852.745: [ParNew: 222614K->8639K(245760K), 0.0050607 secs] 404027K->190178K(791936K), 0.0051372 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:44:24.854+0200: 856.798: [GC (Allocation Failure) 856.798: [ParNew: 227135K->5315K(245760K), 0.0032814 secs] 408674K->186919K(791936K), 0.0033556 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:30.460+0200: 862.405: [GC (Allocation Failure) 862.405: [ParNew: 223811K->5907K(245760K), 0.0037718 secs] 405415K->187578K(791936K), 0.0038375 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:34.501+0200: 866.445: [GC (Allocation Failure) 866.445: [ParNew: 224403K->4868K(245760K), 0.0038179 secs] 406074K->186749K(791936K), 0.0038865 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:44:37.517+0200: 869.461: [GC (Allocation Failure) 869.461: [ParNew: 223364K->7130K(245760K), 0.0049684 secs] 405245K->189082K(791936K), 0.0050383 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:44:39.644+0200: 871.589: [GC (Allocation Failure) 871.589: [ParNew: 225626K->5034K(245760K), 0.0038688 secs] 407578K->187319K(791936K), 0.0039313 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:41.983+0200: 873.927: [GC (Allocation Failure) 873.927: [ParNew: 223530K->3715K(245760K), 0.0050771 secs] 405815K->186362K(791936K), 0.0051596 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:44:44.743+0200: 876.687: [GC (Allocation Failure) 876.687: [ParNew: 222211K->5909K(245760K), 0.0043414 secs] 404858K->188961K(791936K), 0.0044281 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:47.744+0200: 879.688: [GC (Allocation Failure) 879.688: [ParNew: 223839K->6681K(245760K), 0.0042565 secs] 406891K->190053K(791936K), 0.0043428 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:50.466+0200: 882.411: [GC (Allocation Failure) 882.411: [ParNew: 225177K->5039K(245760K), 0.0040764 secs] 408549K->188717K(791936K), 0.0041576 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:44:52.874+0200: 884.818: [GC (Allocation Failure) 884.818: [ParNew: 223535K->6380K(245760K), 0.0039066 secs] 407213K->190202K(791936K), 0.0039803 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:44:55.139+0200: 887.084: [GC (Allocation Failure) 887.084: [ParNew: 224876K->4104K(245760K), 0.0034475 secs] 408698K->188075K(791936K), 0.0035124 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:44:58.179+0200: 890.123: [GC (Allocation Failure) 890.123: [ParNew: 222600K->11768K(245760K), 0.0077618 secs] 406571K->195886K(791936K), 0.0079013 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:01.103+0200: 893.048: [GC (Allocation Failure) 893.048: [ParNew: 230264K->8339K(245760K), 0.0045923 secs] 414382K->192584K(791936K), 0.0046614 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:04.023+0200: 895.968: [GC (Allocation Failure) 895.968: [ParNew: 226743K->4181K(245760K), 0.0030370 secs] 410988K->188563K(791936K), 0.0031093 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:07.100+0200: 899.044: [GC (Allocation Failure) 899.044: [ParNew: 222677K->6159K(245760K), 0.0039332 secs] 407059K->190627K(791936K), 0.0040092 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:09.629+0200: 901.573: [GC (Allocation Failure) 901.573: [ParNew: 224655K->3950K(245760K), 0.0028886 secs] 409123K->188487K(791936K), 0.0029661 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:12.818+0200: 904.763: [GC (Allocation Failure) 904.763: [ParNew: 222446K->3738K(245760K), 0.0034181 secs] 406983K->188363K(791936K), 0.0034853 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:16.396+0200: 908.340: [GC (Allocation Failure) 908.340: [ParNew: 222234K->5226K(245760K), 0.0040279 secs] 406859K->189928K(791936K), 0.0041044 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:18.901+0200: 910.845: [GC (Allocation Failure) 910.845: [ParNew: 223722K->4313K(245760K), 0.0042565 secs] 408424K->189219K(791936K), 0.0043325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:22.071+0200: 914.015: [GC (Allocation Failure) 914.015: [ParNew: 222809K->8337K(245760K), 0.0054759 secs] 407715K->193373K(791936K), 0.0055370 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:24.341+0200: 916.285: [GC (Allocation Failure) 916.285: [ParNew: 226382K->7046K(245760K), 0.0028774 secs] 411417K->192311K(791936K), 0.0029624 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:26.739+0200: 918.683: [GC (Allocation Failure) 918.683: [ParNew: 225542K->5253K(245760K), 0.0040848 secs] 410807K->190591K(791936K), 0.0041562 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:29.557+0200: 921.501: [GC (Allocation Failure) 921.501: [ParNew: 223563K->4043K(245760K), 0.0024651 secs] 408901K->189433K(791936K), 0.0025458 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:31.989+0200: 923.933: [GC (Allocation Failure) 923.933: [ParNew: 222539K->4912K(245760K), 0.0041772 secs] 407929K->190377K(791936K), 0.0042392 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:35.263+0200: 927.208: [GC (Allocation Failure) 927.208: [ParNew: 223408K->6199K(245760K), 0.0037708 secs] 408873K->191712K(791936K), 0.0038515 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:37.598+0200: 929.542: [GC (Allocation Failure) 929.542: [ParNew: 224695K->8263K(245760K), 0.0065279 secs] 410208K->193844K(791936K), 0.0066431 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:39.995+0200: 931.939: [GC (Allocation Failure) 931.939: [ParNew: 226759K->5755K(245760K), 0.0033234 secs] 412340K->191386K(791936K), 0.0033850 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:42.430+0200: 934.375: [GC (Allocation Failure) 934.375: [ParNew: 224251K->5276K(245760K), 0.0038450 secs] 409882K->191228K(791936K), 0.0039215 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:44.942+0200: 936.887: [GC (Allocation Failure) 936.887: [ParNew: 223772K->3178K(245760K), 0.0032241 secs] 409724K->189271K(791936K), 0.0032889 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:47.497+0200: 939.441: [GC (Allocation Failure) 939.441: [ParNew: 221674K->4874K(245760K), 0.0032045 secs] 407767K->191083K(791936K), 0.0032735 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:50.101+0200: 942.046: [GC (Allocation Failure) 942.046: [ParNew: 223370K->5690K(245760K), 0.0039910 secs] 409579K->191973K(791936K), 0.0040545 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:52.754+0200: 944.698: [GC (Allocation Failure) 944.698: [ParNew: 224186K->4671K(245760K), 0.0030832 secs] 410469K->191041K(791936K), 0.0031662 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:45:52 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.2 +2016-04-14 22:45:53 GC log file created logs/garbageCollection.log.3 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9092400k free), swap 20473812k(9802084k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:45:57.351+0200: 949.295: [GC (Allocation Failure) 949.295: [ParNew: 223167K->9863K(245760K), 0.0055865 secs] 409537K->196279K(791936K), 0.0057330 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:46:00.182+0200: 952.127: [GC (Allocation Failure) 952.127: [ParNew: 228359K->6635K(245760K), 0.0035399 secs] 414775K->193128K(791936K), 0.0036113 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:02.446+0200: 954.391: [GC (Allocation Failure) 954.391: [ParNew: 225131K->6087K(245760K), 0.0042504 secs] 411624K->192721K(791936K), 0.0043134 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:05.247+0200: 957.192: [GC (Allocation Failure) 957.192: [ParNew: 224583K->5614K(245760K), 0.0042952 secs] 411217K->192411K(791936K), 0.0043917 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:46:07.754+0200: 959.698: [GC (Allocation Failure) 959.698: [ParNew: 224110K->3802K(245760K), 0.0028117 secs] 410907K->190702K(791936K), 0.0028779 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:10.577+0200: 962.521: [GC (Allocation Failure) 962.521: [ParNew: 222298K->4908K(245760K), 0.0038469 secs] 409198K->192113K(791936K), 0.0039234 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:46:13.529+0200: 965.473: [GC (Allocation Failure) 965.474: [ParNew: 223371K->4088K(245760K), 0.0025845 secs] 410576K->191358K(791936K), 0.0026521 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:16.485+0200: 968.430: [GC (Allocation Failure) 968.430: [ParNew: 222461K->5780K(245760K), 0.0045093 secs] 409730K->193281K(791936K), 0.0045793 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:46:19.285+0200: 971.229: [GC (Allocation Failure) 971.229: [ParNew: 224276K->7415K(245760K), 0.0056079 secs] 411777K->194989K(791936K), 0.0056742 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:46:22.210+0200: 974.154: [GC (Allocation Failure) 974.154: [ParNew: 225911K->5450K(245760K), 0.0042924 secs] 413485K->193100K(791936K), 0.0043666 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:25.260+0200: 977.204: [GC (Allocation Failure) 977.204: [ParNew: 223946K->4279K(245760K), 0.0036416 secs] 411596K->191994K(791936K), 0.0037204 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:28.493+0200: 980.438: [GC (Allocation Failure) 980.467: [ParNew: 222775K->3827K(245760K), 0.0033906 secs] 410490K->191736K(791936K), 0.0326297 secs] [Times: user=0.00 sys=0.00, real=0.03 secs] +2016-04-14T22:46:30.733+0200: 982.678: [GC (Allocation Failure) 982.678: [ParNew: 222323K->6304K(245760K), 0.0048974 secs] 410232K->194299K(791936K), 0.0049754 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:46:32.932+0200: 984.876: [GC (Allocation Failure) 984.876: [ParNew: 224800K->4477K(245760K), 0.0029698 secs] 412795K->192534K(791936K), 0.0030454 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:35.114+0200: 987.058: [GC (Allocation Failure) 987.058: [ParNew: 222973K->3682K(245760K), 0.0031401 secs] 411030K->191822K(791936K), 0.0032507 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:37.732+0200: 989.677: [GC (Allocation Failure) 989.677: [ParNew: 222163K->4195K(245760K), 0.0031429 secs] 410303K->192510K(791936K), 0.0032245 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:40.563+0200: 992.507: [GC (Allocation Failure) 992.507: [ParNew: 222691K->9642K(245760K), 0.0065256 secs] 411006K->198018K(791936K), 0.0066095 secs] [Times: user=0.09 sys=0.02, real=0.01 secs] +2016-04-14T22:46:43.544+0200: 995.489: [GC (Allocation Failure) 995.489: [ParNew: 228138K->8665K(245760K), 0.0047192 secs] 416514K->197089K(791936K), 0.0047920 secs] [Times: user=0.03 sys=0.02, real=0.01 secs] +2016-04-14T22:46:45.944+0200: 997.888: [GC (Allocation Failure) 997.888: [ParNew: 227161K->7179K(245760K), 0.0047136 secs] 415585K->195652K(791936K), 0.0047846 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:47.979+0200: 999.923: [GC (Allocation Failure) 999.923: [ParNew: 225675K->5065K(245760K), 0.0039523 secs] 414148K->193582K(791936K), 0.0040204 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:50.307+0200: 1002.251: [GC (Allocation Failure) 1002.251: [ParNew: 223412K->3506K(245760K), 0.0028527 secs] 411930K->192774K(791936K), 0.0029232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:52.887+0200: 1004.831: [GC (Allocation Failure) 1004.831: [ParNew: 222002K->4585K(245760K), 0.0042914 secs] 411270K->193994K(791936K), 0.0043558 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:55.423+0200: 1007.367: [GC (Allocation Failure) 1007.367: [ParNew: 223081K->5861K(245760K), 0.0042275 secs] 412490K->195399K(791936K), 0.0043199 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:46:59.119+0200: 1011.063: [GC (Allocation Failure) 1011.063: [ParNew: 224357K->6525K(245760K), 0.0037120 secs] 413895K->196197K(791936K), 0.0037969 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:01.785+0200: 1013.730: [GC (Allocation Failure) 1013.730: [ParNew: 225021K->4595K(245760K), 0.0041310 secs] 414693K->194370K(791936K), 0.0041995 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:04.574+0200: 1016.519: [GC (Allocation Failure) 1016.519: [ParNew: 223091K->5601K(245760K), 0.0032987 secs] 412866K->195433K(791936K), 0.0033598 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:07.539+0200: 1019.483: [GC (Allocation Failure) 1019.483: [ParNew: 224097K->6167K(245760K), 0.0039182 secs] 413929K->196060K(791936K), 0.0040003 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:10.629+0200: 1022.573: [GC (Allocation Failure) 1022.573: [ParNew: 224072K->4549K(245760K), 0.0029134 secs] 413964K->194564K(791936K), 0.0029712 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:13.821+0200: 1025.766: [GC (Allocation Failure) 1025.766: [ParNew: 223045K->4566K(245760K), 0.0040176 secs] 413060K->194864K(791936K), 0.0040997 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:16.441+0200: 1028.385: [GC (Allocation Failure) 1028.385: [ParNew: 223062K->6771K(245760K), 0.0046577 secs] 413360K->197168K(791936K), 0.0047253 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:19.164+0200: 1031.109: [GC (Allocation Failure) 1031.109: [ParNew: 224923K->5683K(245760K), 0.0024879 secs] 415320K->196138K(791936K), 0.0025593 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:21.362+0200: 1033.306: [GC (Allocation Failure) 1033.307: [ParNew: 224179K->4797K(245760K), 0.0041963 secs] 414634K->195294K(791936K), 0.0042826 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:23.967+0200: 1035.912: [GC (Allocation Failure) 1035.912: [ParNew: 223166K->4291K(245760K), 0.0030743 secs] 413663K->194876K(791936K), 0.0031373 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:47:26.911+0200: 1038.855: [GC (Allocation Failure) 1038.855: [ParNew: 222787K->5187K(245760K), 0.0038175 secs] 413372K->195855K(791936K), 0.0039005 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:30.488+0200: 1042.432: [GC (Allocation Failure) 1042.432: [ParNew: 223232K->7435K(245760K), 0.0043577 secs] 413900K->198155K(791936K), 0.0044337 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:33.163+0200: 1045.108: [GC (Allocation Failure) 1045.108: [ParNew: 225931K->5316K(245760K), 0.0039859 secs] 416651K->196099K(791936K), 0.0040624 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:36.585+0200: 1048.530: [GC (Allocation Failure) 1048.530: [ParNew: 223812K->5654K(245760K), 0.0047626 secs] 414595K->196644K(791936K), 0.0048410 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:39.270+0200: 1051.214: [GC (Allocation Failure) 1051.214: [ParNew: 224150K->3883K(245760K), 0.0036575 secs] 415140K->195036K(791936K), 0.0037284 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:41.503+0200: 1053.447: [GC (Allocation Failure) 1053.447: [ParNew: 222379K->4674K(245760K), 0.0050337 secs] 413532K->195871K(791936K), 0.0051060 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:44.635+0200: 1056.579: [GC (Allocation Failure) 1056.579: [ParNew: 223170K->10022K(245760K), 0.0060917 secs] 414367K->201275K(791936K), 0.0061612 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:47.930+0200: 1059.875: [GC (Allocation Failure) 1059.875: [ParNew: 228518K->9231K(245760K), 0.0056126 secs] 419771K->200577K(791936K), 0.0056877 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:50.276+0200: 1062.221: [GC (Allocation Failure) 1062.221: [ParNew: 227727K->8642K(245760K), 0.0054302 secs] 419073K->200138K(791936K), 0.0055132 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:52.838+0200: 1064.782: [GC (Allocation Failure) 1064.782: [ParNew: 227138K->10415K(245760K), 0.0063072 secs] 418634K->202066K(791936K), 0.0063772 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:55.285+0200: 1067.229: [GC (Allocation Failure) 1067.229: [ParNew: 228911K->6364K(245760K), 0.0038021 secs] 420562K->198128K(791936K), 0.0038739 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:58.168+0200: 1070.112: [GC (Allocation Failure) 1070.112: [ParNew: 224857K->4031K(245760K), 0.0027408 secs] 416622K->195956K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:00.908+0200: 1072.852: [GC (Allocation Failure) 1072.852: [ParNew: 222527K->5648K(245760K), 0.0049035 secs] 414452K->197722K(791936K), 0.0049772 secs] [Times: user=0.09 sys=0.00, real=0.01 secs] +2016-04-14T22:48:04.270+0200: 1076.215: [GC (Allocation Failure) 1076.215: [ParNew: 224144K->5333K(245760K), 0.0042719 secs] 416218K->197490K(791936K), 0.0043362 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:06.611+0200: 1078.556: [GC (Allocation Failure) 1078.556: [ParNew: 223829K->3697K(245760K), 0.0028210 secs] 415986K->196014K(791936K), 0.0028886 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:09.285+0200: 1081.229: [GC (Allocation Failure) 1081.229: [ParNew: 222193K->5466K(245760K), 0.0040078 secs] 414510K->197848K(791936K), 0.0040848 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:11.734+0200: 1083.679: [GC (Allocation Failure) 1083.679: [ParNew: 223962K->3726K(245760K), 0.0030664 secs] 416344K->196162K(791936K), 0.0031424 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:14.993+0200: 1086.938: [GC (Allocation Failure) 1086.938: [ParNew: 222222K->3106K(245760K), 0.0030883 secs] 414658K->195585K(791936K), 0.0031942 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:17.800+0200: 1089.744: [GC (Allocation Failure) 1089.744: [ParNew: 221602K->3147K(245760K), 0.0031723 secs] 414081K->195833K(791936K), 0.0032362 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:20.281+0200: 1092.226: [GC (Allocation Failure) 1092.226: [ParNew: 221643K->5400K(245760K), 0.0037704 secs] 414329K->198193K(791936K), 0.0038431 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:23.007+0200: 1094.952: [GC (Allocation Failure) 1094.952: [ParNew: 223896K->4172K(245760K), 0.0028065 secs] 416689K->197136K(791936K), 0.0028798 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:25.745+0200: 1097.690: [GC (Allocation Failure) 1097.690: [ParNew: 222668K->4928K(245760K), 0.0048606 secs] 415632K->197955K(791936K), 0.0049222 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:48:27.591+0200: 1099.535: [GC (Allocation Failure) 1099.535: [ParNew: 222950K->6591K(245760K), 0.0038949 secs] 415977K->199675K(791936K), 0.0039682 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:30.231+0200: 1102.175: [GC (Allocation Failure) 1102.175: [ParNew: 225087K->4210K(245760K), 0.0036631 secs] 418171K->197345K(791936K), 0.0037634 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:32.740+0200: 1104.685: [GC (Allocation Failure) 1104.685: [ParNew: 222706K->4012K(245760K), 0.0030249 secs] 415841K->197203K(791936K), 0.0030990 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:35.166+0200: 1107.111: [GC (Allocation Failure) 1107.111: [ParNew: 222508K->3307K(245760K), 0.0029880 secs] 415699K->196613K(791936K), 0.0030547 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:38.219+0200: 1110.163: [GC (Allocation Failure) 1110.163: [ParNew: 221803K->4944K(245760K), 0.0040227 secs] 415109K->198379K(791936K), 0.0040927 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:41.106+0200: 1113.050: [GC (Allocation Failure) 1113.050: [ParNew: 223440K->4584K(245760K), 0.0036164 secs] 416875K->198094K(791936K), 0.0036957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:43.820+0200: 1115.765: [GC (Allocation Failure) 1115.765: [ParNew: 223080K->6232K(245760K), 0.0035954 secs] 416590K->199849K(791936K), 0.0036808 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:46.863+0200: 1118.807: [GC (Allocation Failure) 1118.807: [ParNew: 224728K->4862K(245760K), 0.0037787 secs] 418345K->199213K(791936K), 0.0038823 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:48.974+0200: 1120.918: [GC (Allocation Failure) 1120.918: [ParNew: 223358K->4402K(245760K), 0.0043577 secs] 417709K->198815K(791936K), 0.0044370 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:48:51.406+0200: 1123.350: [GC (Allocation Failure) 1123.351: [ParNew: 222898K->6136K(245760K), 0.0050257 secs] 417311K->200592K(791936K), 0.0051060 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:48:54.548+0200: 1126.492: [GC (Allocation Failure) 1126.492: [ParNew: 224632K->4567K(245760K), 0.0029507 secs] 419088K->199092K(791936K), 0.0030267 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:57.753+0200: 1129.698: [GC (Allocation Failure) 1129.698: [ParNew: 223063K->7059K(245760K), 0.0041893 secs] 417588K->201640K(791936K), 0.0042607 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:00.878+0200: 1132.823: [GC (Allocation Failure) 1132.823: [ParNew: 225555K->7043K(245760K), 0.0045532 secs] 420136K->201904K(791936K), 0.0046297 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:03.302+0200: 1135.246: [GC (Allocation Failure) 1135.246: [ParNew: 225539K->4566K(245760K), 0.0042891 secs] 420400K->199848K(791936K), 0.0043586 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:06.156+0200: 1138.101: [GC (Allocation Failure) 1138.101: [ParNew: 223062K->4776K(245760K), 0.0045424 secs] 418344K->200300K(791936K), 0.0046040 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:49:08.781+0200: 1140.726: [GC (Allocation Failure) 1140.726: [ParNew: 223272K->3930K(245760K), 0.0032031 secs] 418796K->199622K(791936K), 0.0032833 secs] [Times: user=0.11 sys=0.02, real=0.00 secs] +2016-04-14T22:49:11.404+0200: 1143.349: [GC (Allocation Failure) 1143.349: [ParNew: 222122K->3517K(245760K), 0.0027944 secs] 417813K->199314K(791936K), 0.0028537 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:14.104+0200: 1146.049: [GC (Allocation Failure) 1146.049: [ParNew: 222013K->3951K(245760K), 0.0038245 secs] 417810K->199848K(791936K), 0.0039532 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:17.655+0200: 1149.600: [GC (Allocation Failure) 1149.600: [ParNew: 222447K->7211K(245760K), 0.0050803 secs] 418344K->203169K(791936K), 0.0051615 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:49:20.296+0200: 1152.241: [GC (Allocation Failure) 1152.241: [ParNew: 225707K->6056K(245760K), 0.0040307 secs] 421665K->202087K(791936K), 0.0041072 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:49:22.642+0200: 1154.586: [GC (Allocation Failure) 1154.586: [ParNew: 223985K->4771K(245760K), 0.0043861 secs] 420016K->200893K(791936K), 0.0044487 secs] [Times: user=0.08 sys=0.00, real=0.00 secs] +2016-04-14T22:49:25.318+0200: 1157.262: [GC (Allocation Failure) 1157.263: [ParNew: 223267K->6112K(245760K), 0.0045452 secs] 419389K->202339K(791936K), 0.0046129 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:27.927+0200: 1159.871: [GC (Allocation Failure) 1159.871: [ParNew: 224608K->4529K(245760K), 0.0027044 secs] 420835K->200809K(791936K), 0.0027715 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:31.037+0200: 1162.981: [GC (Allocation Failure) 1162.981: [ParNew: 223025K->2468K(245760K), 0.0026073 secs] 419305K->198818K(791936K), 0.0026661 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:33.253+0200: 1165.198: [GC (Allocation Failure) 1165.198: [ParNew: 220964K->5342K(245760K), 0.0037932 secs] 417314K->201787K(791936K), 0.0038702 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:36.908+0200: 1168.853: [GC (Allocation Failure) 1168.853: [ParNew: 223838K->7274K(245760K), 0.0038063 secs] 420283K->203865K(791936K), 0.0038753 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:39.652+0200: 1171.596: [GC (Allocation Failure) 1171.596: [ParNew: 225770K->5725K(245760K), 0.0041030 secs] 422361K->202460K(791936K), 0.0041650 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:43.185+0200: 1175.129: [GC (Allocation Failure) 1175.130: [ParNew: 224221K->4598K(245760K), 0.0039322 secs] 420956K->201388K(791936K), 0.0040153 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:49:46.569+0200: 1178.514: [GC (Allocation Failure) 1178.514: [ParNew: 223094K->5619K(245760K), 0.0033575 secs] 419884K->202461K(791936K), 0.0034247 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:49.977+0200: 1181.921: [GC (Allocation Failure) 1181.921: [ParNew: 224115K->6557K(245760K), 0.0040507 secs] 420957K->203534K(791936K), 0.0041342 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:53.502+0200: 1185.446: [GC (Allocation Failure) 1185.446: [ParNew: 225053K->5629K(245760K), 0.0039248 secs] 422030K->202993K(791936K), 0.0039859 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:57.445+0200: 1189.389: [GC (Allocation Failure) 1189.389: [ParNew: 224125K->8641K(245760K), 0.0062993 secs] 421489K->206281K(791936K), 0.0063814 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:00.398+0200: 1192.343: [GC (Allocation Failure) 1192.343: [ParNew: 227137K->11567K(245760K), 0.0074754 secs] 424777K->209487K(791936K), 0.0075668 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:03.410+0200: 1195.355: [GC (Allocation Failure) 1195.355: [ParNew: 230063K->7195K(245760K), 0.0060745 secs] 427983K->205532K(791936K), 0.0061374 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:06.261+0200: 1198.206: [GC (Allocation Failure) 1198.206: [ParNew: 225691K->7262K(245760K), 0.0045732 secs] 424028K->205971K(791936K), 0.0046539 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:10.312+0200: 1202.256: [GC (Allocation Failure) 1202.256: [ParNew: 225758K->8849K(245760K), 0.0048932 secs] 424467K->207916K(791936K), 0.0049572 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:50:13.086+0200: 1205.030: [GC (Allocation Failure) 1205.031: [ParNew: 227345K->6302K(245760K), 0.0038399 secs] 426412K->205795K(791936K), 0.0039131 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:50:13 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.3 +2016-04-14 22:50:13 GC log file created logs/garbageCollection.log.4 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9070724k free), swap 20473812k(9819300k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:50:15.874+0200: 1207.818: [GC (Allocation Failure) 1207.818: [ParNew: 224798K->4278K(245760K), 0.0040722 secs] 424291K->204126K(791936K), 0.0042359 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:50:18.946+0200: 1210.890: [GC (Allocation Failure) 1210.890: [ParNew: 222774K->9990K(245760K), 0.0056373 secs] 422622K->210023K(791936K), 0.0057115 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:22.592+0200: 1214.536: [GC (Allocation Failure) 1214.536: [ParNew: 228486K->6385K(245760K), 0.0028830 secs] 428519K->206501K(791936K), 0.0029540 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:26.270+0200: 1218.215: [GC (Allocation Failure) 1218.215: [ParNew: 224881K->4340K(245760K), 0.0031998 secs] 424997K->204578K(791936K), 0.0032796 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:29.217+0200: 1221.162: [GC (Allocation Failure) 1221.162: [ParNew: 222836K->4321K(245760K), 0.0037172 secs] 423074K->204652K(791936K), 0.0037951 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:50:32.066+0200: 1224.010: [GC (Allocation Failure) 1224.010: [ParNew: 222817K->5882K(245760K), 0.0050388 secs] 423148K->206263K(791936K), 0.0051372 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:34.986+0200: 1226.931: [GC (Allocation Failure) 1226.931: [ParNew: 224378K->7186K(245760K), 0.0038926 secs] 424759K->207624K(791936K), 0.0039686 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:37.674+0200: 1229.618: [GC (Allocation Failure) 1229.618: [ParNew: 225682K->6439K(245760K), 0.0052753 secs] 426120K->206965K(791936K), 0.0053542 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:40.740+0200: 1232.685: [GC (Allocation Failure) 1232.685: [ParNew: 224935K->6161K(245760K), 0.0036383 secs] 425461K->206949K(791936K), 0.0037158 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:43.566+0200: 1235.511: [GC (Allocation Failure) 1235.511: [ParNew: 224657K->6520K(245760K), 0.0042984 secs] 425445K->207686K(791936K), 0.0043708 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:46.271+0200: 1238.215: [GC (Allocation Failure) 1238.215: [ParNew: 225016K->7527K(245760K), 0.0044314 secs] 426182K->208841K(791936K), 0.0045028 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:48.657+0200: 1240.601: [GC (Allocation Failure) 1240.601: [ParNew: 226023K->5114K(245760K), 0.0030473 secs] 427337K->206577K(791936K), 0.0031126 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:50:51.365+0200: 1243.310: [GC (Allocation Failure) 1243.310: [ParNew: 223610K->6098K(245760K), 0.0044641 secs] 425073K->207695K(791936K), 0.0045256 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:53.977+0200: 1245.922: [GC (Allocation Failure) 1245.922: [ParNew: 224594K->6167K(245760K), 0.0035138 secs] 426191K->208015K(791936K), 0.0035903 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:56.512+0200: 1248.457: [GC (Allocation Failure) 1248.457: [ParNew: 224663K->3958K(245760K), 0.0034111 secs] 426511K->205954K(791936K), 0.0035618 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:59.738+0200: 1251.682: [GC (Allocation Failure) 1251.682: [ParNew: 222454K->3822K(245760K), 0.0033626 secs] 424450K->205925K(791936K), 0.0034396 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:02.334+0200: 1254.278: [GC (Allocation Failure) 1254.278: [ParNew: 222318K->4415K(245760K), 0.0038086 secs] 424421K->206608K(791936K), 0.0038744 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:04.862+0200: 1256.806: [GC (Allocation Failure) 1256.806: [ParNew: 222911K->4122K(245760K), 0.0030407 secs] 425104K->206379K(791936K), 0.0031154 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:07.232+0200: 1259.177: [GC (Allocation Failure) 1259.177: [ParNew: 222618K->7013K(245760K), 0.0046847 secs] 424875K->209466K(791936K), 0.0047463 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:09.597+0200: 1261.541: [GC (Allocation Failure) 1261.541: [ParNew: 225509K->5535K(245760K), 0.0041627 secs] 427962K->208085K(791936K), 0.0042471 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:12.703+0200: 1264.648: [GC (Allocation Failure) 1264.648: [ParNew: 224031K->8874K(245760K), 0.0052716 secs] 426581K->211491K(791936K), 0.0053486 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:51:16.155+0200: 1268.100: [GC (Allocation Failure) 1268.100: [ParNew: 227370K->11716K(245760K), 0.0062307 secs] 429987K->214466K(791936K), 0.0062947 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:51:18.497+0200: 1270.442: [GC (Allocation Failure) 1270.442: [ParNew: 230212K->8051K(245760K), 0.0037620 secs] 432962K->210954K(791936K), 0.0038417 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:21.122+0200: 1273.066: [GC (Allocation Failure) 1273.066: [ParNew: 226547K->8201K(245760K), 0.0058015 secs] 429450K->211173K(791936K), 0.0058734 secs] [Times: user=0.09 sys=0.00, real=0.01 secs] +2016-04-14T22:51:23.636+0200: 1275.580: [GC (Allocation Failure) 1275.580: [ParNew: 226697K->5873K(245760K), 0.0026031 secs] 429669K->208903K(791936K), 0.0026773 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:26.610+0200: 1278.554: [GC (Allocation Failure) 1278.554: [ParNew: 224369K->5009K(245760K), 0.0038207 secs] 427399K->208176K(791936K), 0.0038968 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:29.101+0200: 1281.045: [GC (Allocation Failure) 1281.045: [ParNew: 223505K->5103K(245760K), 0.0038361 secs] 426672K->208442K(791936K), 0.0039136 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:31.573+0200: 1283.518: [GC (Allocation Failure) 1283.518: [ParNew: 223599K->5894K(245760K), 0.0042033 secs] 426938K->209431K(791936K), 0.0042798 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:34.514+0200: 1286.458: [GC (Allocation Failure) 1286.458: [ParNew: 224390K->4310K(245760K), 0.0029507 secs] 427927K->207980K(791936K), 0.0030230 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:37.290+0200: 1289.235: [GC (Allocation Failure) 1289.235: [ParNew: 222806K->3469K(245760K), 0.0027422 secs] 426476K->207231K(791936K), 0.0028098 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:39.468+0200: 1291.413: [GC (Allocation Failure) 1291.413: [ParNew: 221965K->5245K(245760K), 0.0038543 secs] 425727K->209144K(791936K), 0.0039299 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:42.081+0200: 1294.026: [GC (Allocation Failure) 1294.026: [ParNew: 223741K->4473K(245760K), 0.0030669 secs] 427640K->208517K(791936K), 0.0031448 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:45.816+0200: 1297.761: [GC (Allocation Failure) 1297.761: [ParNew: 222969K->7958K(245760K), 0.0054447 secs] 427013K->212060K(791936K), 0.0055128 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:51:48.407+0200: 1300.352: [GC (Allocation Failure) 1300.352: [ParNew: 226255K->7752K(245760K), 0.0045219 secs] 430358K->211939K(791936K), 0.0046035 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:51:51.480+0200: 1303.424: [GC (Allocation Failure) 1303.424: [ParNew: 226248K->5895K(245760K), 0.0039327 secs] 430435K->210158K(791936K), 0.0040199 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:54.083+0200: 1306.027: [GC (Allocation Failure) 1306.027: [ParNew: 224391K->3686K(245760K), 0.0040699 secs] 428654K->208125K(791936K), 0.0041422 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:56.198+0200: 1308.143: [GC (Allocation Failure) 1308.143: [ParNew: 222182K->2525K(245760K), 0.0027608 secs] 426621K->207039K(791936K), 0.0028411 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:59.283+0200: 1311.228: [GC (Allocation Failure) 1311.228: [ParNew: 221021K->4571K(245760K), 0.0040787 secs] 425535K->209133K(791936K), 0.0041678 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:52:02.058+0200: 1314.002: [GC (Allocation Failure) 1314.002: [ParNew: 223062K->6277K(245760K), 0.0035343 secs] 427623K->210949K(791936K), 0.0036197 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:05.093+0200: 1317.037: [GC (Allocation Failure) 1317.037: [ParNew: 224773K->5154K(245760K), 0.0032395 secs] 429445K->209910K(791936K), 0.0033127 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:52:08.439+0200: 1320.383: [GC (Allocation Failure) 1320.383: [ParNew: 223650K->6164K(245760K), 0.0043400 secs] 428406K->211081K(791936K), 0.0044095 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:52:11.386+0200: 1323.330: [GC (Allocation Failure) 1323.330: [ParNew: 224660K->5526K(245760K), 0.0036206 secs] 429577K->210512K(791936K), 0.0036994 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:13.838+0200: 1325.783: [GC (Allocation Failure) 1325.783: [ParNew: 224022K->3613K(245760K), 0.0029339 secs] 429008K->208636K(791936K), 0.0030067 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:16.979+0200: 1328.923: [GC (Allocation Failure) 1328.923: [ParNew: 222109K->5505K(245760K), 0.0039117 secs] 427132K->210601K(791936K), 0.0039766 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:19.607+0200: 1331.551: [GC (Allocation Failure) 1331.551: [ParNew: 224001K->6094K(245760K), 0.0041398 secs] 429097K->211400K(791936K), 0.0042033 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:52:22.708+0200: 1334.653: [GC (Allocation Failure) 1334.653: [ParNew: 224590K->4518K(245760K), 0.0031298 secs] 429896K->209893K(791936K), 0.0031928 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:26.324+0200: 1338.268: [GC (Allocation Failure) 1338.268: [ParNew: 223014K->3801K(245760K), 0.0030244 secs] 428389K->209328K(791936K), 0.0030939 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:28.868+0200: 1340.812: [GC (Allocation Failure) 1340.812: [ParNew: 222297K->7386K(245760K), 0.0053761 secs] 427824K->212975K(791936K), 0.0054484 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:31.872+0200: 1343.816: [GC (Allocation Failure) 1343.816: [ParNew: 225882K->5195K(245760K), 0.0030967 secs] 431471K->211069K(791936K), 0.0031630 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:34.260+0200: 1346.205: [GC (Allocation Failure) 1346.205: [ParNew: 223632K->3131K(245760K), 0.0028420 secs] 429506K->209284K(791936K), 0.0029106 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:36.459+0200: 1348.404: [GC (Allocation Failure) 1348.404: [ParNew: 221627K->2480K(245760K), 0.0025504 secs] 427780K->208720K(791936K), 0.0026106 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:39.315+0200: 1351.260: [GC (Allocation Failure) 1351.260: [ParNew: 220976K->4366K(245760K), 0.0038315 secs] 427216K->210827K(791936K), 0.0039140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:42.177+0200: 1354.122: [GC (Allocation Failure) 1354.122: [ParNew: 222862K->5141K(245760K), 0.0039882 secs] 429323K->211696K(791936K), 0.0040685 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:44.104+0200: 1356.048: [GC (Allocation Failure) 1356.048: [ParNew: 223637K->3506K(245760K), 0.0030286 secs] 430192K->210170K(791936K), 0.0031060 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:46.576+0200: 1358.520: [GC (Allocation Failure) 1358.520: [ParNew: 220908K->4853K(245760K), 0.0027781 secs] 427573K->211566K(791936K), 0.0028579 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:48.456+0200: 1360.401: [GC (Allocation Failure) 1360.401: [ParNew: 223349K->5587K(245760K), 0.0036556 secs] 430062K->212348K(791936K), 0.0037200 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:51.210+0200: 1363.154: [GC (Allocation Failure) 1363.154: [ParNew: 224083K->4697K(245760K), 0.0038543 secs] 430844K->211572K(791936K), 0.0039168 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:53.742+0200: 1365.686: [GC (Allocation Failure) 1365.686: [ParNew: 223193K->6108K(245760K), 0.0035432 secs] 430068K->213061K(791936K), 0.0036033 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:56.437+0200: 1368.381: [GC (Allocation Failure) 1368.381: [ParNew: 224604K->3838K(245760K), 0.0036257 secs] 431557K->210864K(791936K), 0.0037130 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:52:59.622+0200: 1371.566: [GC (Allocation Failure) 1371.566: [ParNew: 221994K->4102K(245760K), 0.0033412 secs] 429019K->211240K(791936K), 0.0034018 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:01.768+0200: 1373.712: [GC (Allocation Failure) 1373.712: [ParNew: 222598K->3385K(245760K), 0.0034265 secs] 429736K->210594K(791936K), 0.0034932 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:04.151+0200: 1376.096: [GC (Allocation Failure) 1376.096: [ParNew: 221881K->4607K(245760K), 0.0033220 secs] 429090K->211860K(791936K), 0.0033831 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:06.897+0200: 1378.842: [GC (Allocation Failure) 1378.842: [ParNew: 223103K->6450K(245760K), 0.0042345 secs] 430356K->213755K(791936K), 0.0043138 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:10.066+0200: 1382.010: [GC (Allocation Failure) 1382.010: [ParNew: 224946K->8367K(245760K), 0.0044188 secs] 432251K->215762K(791936K), 0.0044939 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:13.321+0200: 1385.266: [GC (Allocation Failure) 1385.266: [ParNew: 226863K->5211K(245760K), 0.0031331 secs] 434258K->212825K(791936K), 0.0032012 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:16.533+0200: 1388.478: [GC (Allocation Failure) 1388.478: [ParNew: 223707K->2877K(245760K), 0.0032371 secs] 431321K->210561K(791936K), 0.0033085 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:19.142+0200: 1391.086: [GC (Allocation Failure) 1391.086: [ParNew: 221373K->4465K(245760K), 0.0032441 secs] 429057K->212235K(791936K), 0.0033244 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:53:21.966+0200: 1393.911: [GC (Allocation Failure) 1393.911: [ParNew: 222961K->2904K(245760K), 0.0030309 secs] 430731K->211160K(791936K), 0.0030990 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:53:25.256+0200: 1397.200: [GC (Allocation Failure) 1397.200: [ParNew: 221400K->2706K(245760K), 0.0024758 secs] 429656K->211016K(791936K), 0.0025462 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:28.558+0200: 1400.503: [GC (Allocation Failure) 1400.503: [ParNew: 221202K->3247K(245760K), 0.0029446 secs] 429512K->211631K(791936K), 0.0030230 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:32.058+0200: 1404.002: [GC (Allocation Failure) 1404.002: [ParNew: 221743K->2628K(245760K), 0.0026129 secs] 430127K->211105K(791936K), 0.0026810 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:35.056+0200: 1407.001: [GC (Allocation Failure) 1407.001: [ParNew: 221124K->5188K(245760K), 0.0039602 secs] 429601K->213693K(791936K), 0.0040241 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:37.817+0200: 1409.761: [GC (Allocation Failure) 1409.761: [ParNew: 223684K->3835K(245760K), 0.0025364 secs] 432189K->212371K(791936K), 0.0026078 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:41.313+0200: 1413.258: [GC (Allocation Failure) 1413.258: [ParNew: 222331K->5773K(245760K), 0.0044202 secs] 430867K->214408K(791936K), 0.0044967 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:53:44.357+0200: 1416.301: [GC (Allocation Failure) 1416.301: [ParNew: 224269K->4737K(245760K), 0.0029899 secs] 432904K->213414K(791936K), 0.0030575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:47.711+0200: 1419.655: [GC (Allocation Failure) 1419.655: [ParNew: 223233K->3627K(245760K), 0.0032954 secs] 431910K->212346K(791936K), 0.0033668 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:50.586+0200: 1422.531: [GC (Allocation Failure) 1422.531: [ParNew: 222123K->4407K(245760K), 0.0038002 secs] 430842K->213164K(791936K), 0.0039290 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:53.371+0200: 1425.315: [GC (Allocation Failure) 1425.316: [ParNew: 222903K->3350K(245760K), 0.0029773 secs] 431660K->212230K(791936K), 0.0030384 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:56.314+0200: 1428.259: [GC (Allocation Failure) 1428.259: [ParNew: 221846K->4411K(245760K), 0.0034671 secs] 430726K->213333K(791936K), 0.0035450 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:59.010+0200: 1430.954: [GC (Allocation Failure) 1430.954: [ParNew: 222907K->12925K(245760K), 0.0078948 secs] 431829K->221899K(791936K), 0.0079601 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:54:02.635+0200: 1434.579: [GC (Allocation Failure) 1434.579: [ParNew: 231421K->8745K(245760K), 0.0034489 secs] 440395K->217882K(791936K), 0.0035203 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:06.066+0200: 1438.011: [GC (Allocation Failure) 1438.011: [ParNew: 227241K->3778K(245760K), 0.0033710 secs] 436378K->212962K(791936K), 0.0034331 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:08.853+0200: 1440.798: [GC (Allocation Failure) 1440.798: [ParNew: 222274K->3347K(245760K), 0.0027123 secs] 431458K->212576K(791936K), 0.0027729 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:12.325+0200: 1444.270: [GC (Allocation Failure) 1444.270: [ParNew: 221843K->5754K(245760K), 0.0044734 secs] 431072K->215095K(791936K), 0.0045457 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:54:15.138+0200: 1447.082: [GC (Allocation Failure) 1447.082: [ParNew: 224250K->3865K(245760K), 0.0027114 secs] 433591K->213291K(791936K), 0.0027809 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:18.153+0200: 1450.097: [GC (Allocation Failure) 1450.097: [ParNew: 222205K->3073K(245760K), 0.0024240 secs] 431631K->212578K(791936K), 0.0025000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:21.533+0200: 1453.478: [GC (Allocation Failure) 1453.478: [ParNew: 221569K->2970K(245760K), 0.0029843 secs] 431074K->212558K(791936K), 0.0030519 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:24.665+0200: 1456.609: [GC (Allocation Failure) 1456.609: [ParNew: 221466K->2751K(245760K), 0.0029022 secs] 431054K->212503K(791936K), 0.0029843 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:27.681+0200: 1459.626: [GC (Allocation Failure) 1459.626: [ParNew: 221247K->3832K(245760K), 0.0030137 secs] 430999K->213641K(791936K), 0.0030930 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:30.360+0200: 1462.305: [GC (Allocation Failure) 1462.305: [ParNew: 222328K->3079K(245760K), 0.0027412 secs] 432137K->212944K(791936K), 0.0028079 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:54:33.892+0200: 1465.837: [GC (Allocation Failure) 1465.837: [ParNew: 221575K->2988K(245760K), 0.0032101 secs] 431440K->212987K(791936K), 0.0032796 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:54:37.139+0200: 1469.084: [GC (Allocation Failure) 1469.084: [ParNew: 221484K->2943K(245760K), 0.0028149 secs] 431483K->213038K(791936K), 0.0028854 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:54:39 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.4 +2016-04-14 22:54:39 GC log file created logs/garbageCollection.log.5 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9066584k free), swap 20473812k(9786080k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:54:39.921+0200: 1471.865: [GC (Allocation Failure) 1471.866: [ParNew: 221439K->3015K(245760K), 0.0033775 secs] 431534K->213164K(791936K), 0.0035665 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:54:43.153+0200: 1475.097: [GC (Allocation Failure) 1475.097: [ParNew: 221511K->2809K(245760K), 0.0024571 secs] 431660K->212978K(791936K), 0.0025215 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:46.151+0200: 1478.096: [GC (Allocation Failure) 1478.096: [ParNew: 221305K->4832K(245760K), 0.0042793 secs] 431474K->215040K(791936K), 0.0043512 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:49.009+0200: 1480.954: [GC (Allocation Failure) 1480.954: [ParNew: 223328K->3277K(245760K), 0.0028877 secs] 433536K->213590K(791936K), 0.0029549 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:53.219+0200: 1485.164: [GC (Allocation Failure) 1485.164: [ParNew: 221773K->3478K(245760K), 0.0042751 secs] 432086K->213818K(791936K), 0.0043717 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:54:57.218+0200: 1489.162: [GC (Allocation Failure) 1489.162: [ParNew: 221974K->3413K(245760K), 0.0027823 secs] 432314K->213838K(791936K), 0.0028686 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:00.086+0200: 1492.030: [GC (Allocation Failure) 1492.030: [ParNew: 221909K->6284K(245760K), 0.0043213 secs] 432334K->216831K(791936K), 0.0044043 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:03.431+0200: 1495.375: [GC (Allocation Failure) 1495.375: [ParNew: 224663K->4547K(245760K), 0.0036117 secs] 435210K->215204K(791936K), 0.0036859 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:06.210+0200: 1498.155: [GC (Allocation Failure) 1498.155: [ParNew: 223043K->4047K(245760K), 0.0033808 secs] 433700K->214776K(791936K), 0.0034438 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:08.981+0200: 1500.925: [GC (Allocation Failure) 1500.925: [ParNew: 222543K->7795K(245760K), 0.0057358 secs] 433272K->218712K(791936K), 0.0058062 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:55:12.141+0200: 1504.086: [GC (Allocation Failure) 1504.086: [ParNew: 226291K->5382K(245760K), 0.0030976 secs] 437208K->216365K(791936K), 0.0031578 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:55:15.385+0200: 1507.329: [GC (Allocation Failure) 1507.329: [ParNew: 223878K->3524K(245760K), 0.0029638 secs] 434861K->214568K(791936K), 0.0030468 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:18.192+0200: 1510.137: [GC (Allocation Failure) 1510.137: [ParNew: 222020K->2457K(245760K), 0.0030193 secs] 433064K->213553K(791936K), 0.0030948 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:21.235+0200: 1513.180: [GC (Allocation Failure) 1513.180: [ParNew: 220953K->5237K(245760K), 0.0032777 secs] 432049K->216391K(791936K), 0.0033486 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:55:24.520+0200: 1516.464: [GC (Allocation Failure) 1516.464: [ParNew: 223733K->5863K(245760K), 0.0035072 secs] 434887K->217101K(791936K), 0.0036351 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:27.910+0200: 1519.855: [GC (Allocation Failure) 1519.855: [ParNew: 224359K->3691K(245760K), 0.0027972 secs] 435597K->214978K(791936K), 0.0028593 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:31.098+0200: 1523.042: [GC (Allocation Failure) 1523.042: [ParNew: 221929K->3150K(245760K), 0.0028420 secs] 433217K->214553K(791936K), 0.0029218 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:34.004+0200: 1525.949: [GC (Allocation Failure) 1525.949: [ParNew: 221646K->4666K(245760K), 0.0041128 secs] 433049K->216184K(791936K), 0.0041804 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:55:36.711+0200: 1528.655: [GC (Allocation Failure) 1528.655: [ParNew: 223162K->3428K(245760K), 0.0029138 secs] 434680K->215052K(791936K), 0.0029931 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:38.945+0200: 1530.889: [GC (Allocation Failure) 1530.889: [ParNew: 221839K->4873K(245760K), 0.0042093 secs] 433463K->216549K(791936K), 0.0043068 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:42.879+0200: 1534.824: [GC (Allocation Failure) 1534.824: [ParNew: 223369K->4412K(245760K), 0.0040405 secs] 435045K->216260K(791936K), 0.0041179 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:46.707+0200: 1538.651: [GC (Allocation Failure) 1538.651: [ParNew: 222908K->6960K(245760K), 0.0052837 secs] 434756K->218852K(791936K), 0.0053560 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:49.442+0200: 1541.387: [GC (Allocation Failure) 1541.387: [ParNew: 225456K->5665K(245760K), 0.0025714 secs] 437348K->217628K(791936K), 0.0026423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:53.354+0200: 1545.298: [GC (Allocation Failure) 1545.298: [ParNew: 223307K->3111K(245760K), 0.0032847 secs] 435269K->215132K(791936K), 0.0033556 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:56.325+0200: 1548.269: [GC (Allocation Failure) 1548.269: [ParNew: 221607K->4038K(245760K), 0.0036313 secs] 433628K->216130K(791936K), 0.0037018 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:59.353+0200: 1551.298: [GC (Allocation Failure) 1551.298: [ParNew: 222534K->4608K(245760K), 0.0037494 secs] 434626K->217115K(791936K), 0.0038305 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:03.021+0200: 1554.966: [GC (Allocation Failure) 1554.966: [ParNew: 223104K->6169K(245760K), 0.0045853 secs] 435611K->218778K(791936K), 0.0046455 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:06.517+0200: 1558.461: [GC (Allocation Failure) 1558.461: [ParNew: 224665K->4341K(245760K), 0.0036388 secs] 437274K->217079K(791936K), 0.0037200 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:09.034+0200: 1560.979: [GC (Allocation Failure) 1560.979: [ParNew: 222837K->3082K(245760K), 0.0025574 secs] 435575K->215889K(791936K), 0.0026265 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:12.473+0200: 1564.417: [GC (Allocation Failure) 1564.418: [ParNew: 221578K->2068K(245760K), 0.0027422 secs] 434385K->214988K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:15.824+0200: 1567.769: [GC (Allocation Failure) 1567.769: [ParNew: 220564K->2439K(245760K), 0.0025924 secs] 433484K->215481K(791936K), 0.0026657 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:19.061+0200: 1571.005: [GC (Allocation Failure) 1571.005: [ParNew: 220935K->4888K(245760K), 0.0036701 secs] 433977K->218014K(791936K), 0.0037475 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:56:21.642+0200: 1573.587: [GC (Allocation Failure) 1573.587: [ParNew: 223384K->3300K(245760K), 0.0027352 secs] 436510K->216458K(791936K), 0.0028070 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:25.027+0200: 1576.971: [GC (Allocation Failure) 1576.971: [ParNew: 221796K->3580K(245760K), 0.0029423 secs] 434954K->216902K(791936K), 0.0030734 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:27.886+0200: 1579.831: [GC (Allocation Failure) 1579.831: [ParNew: 222076K->5462K(245760K), 0.0041711 secs] 435398K->218876K(791936K), 0.0042373 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:30.657+0200: 1582.601: [GC (Allocation Failure) 1582.601: [ParNew: 223650K->4022K(245760K), 0.0032348 secs] 437063K->217515K(791936K), 0.0033416 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:56:34.393+0200: 1586.337: [GC (Allocation Failure) 1586.337: [ParNew: 222518K->6130K(245760K), 0.0039243 secs] 436011K->219650K(791936K), 0.0040101 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:38.239+0200: 1590.184: [GC (Allocation Failure) 1590.184: [ParNew: 224610K->5006K(245760K), 0.0027771 secs] 438131K->218567K(791936K), 0.0028350 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:41.125+0200: 1593.069: [GC (Allocation Failure) 1593.069: [ParNew: 223098K->4031K(245760K), 0.0029297 secs] 436659K->217674K(791936K), 0.0030025 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:56:44.161+0200: 1596.105: [GC (Allocation Failure) 1596.105: [ParNew: 222527K->4877K(245760K), 0.0032945 secs] 436170K->218559K(791936K), 0.0033608 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:46.995+0200: 1598.939: [GC (Allocation Failure) 1598.939: [ParNew: 223373K->3514K(245760K), 0.0037815 secs] 437055K->217636K(791936K), 0.0038492 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:49.730+0200: 1601.676: [GC (Allocation Failure) 1601.676: [ParNew: 221292K->3288K(245760K), 0.0029782 secs] 435414K->217564K(791936K), 0.0030529 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:53.243+0200: 1605.188: [GC (Allocation Failure) 1605.188: [ParNew: 221784K->2803K(245760K), 0.0031406 secs] 436060K->217155K(791936K), 0.0032040 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:56.489+0200: 1608.433: [GC (Allocation Failure) 1608.433: [ParNew: 221299K->3318K(245760K), 0.0033454 secs] 435651K->217769K(791936K), 0.0034037 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:59.180+0200: 1611.124: [GC (Allocation Failure) 1611.124: [ParNew: 221814K->3292K(245760K), 0.0034951 secs] 436265K->217808K(791936K), 0.0035581 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:02.092+0200: 1614.036: [GC (Allocation Failure) 1614.036: [ParNew: 221788K->2478K(245760K), 0.0031462 secs] 436304K->217045K(791936K), 0.0032124 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:05.131+0200: 1617.075: [GC (Allocation Failure) 1617.075: [ParNew: 220974K->2613K(245760K), 0.0026689 secs] 435541K->217255K(791936K), 0.0027352 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:09.517+0200: 1621.461: [GC (Allocation Failure) 1621.461: [ParNew: 221109K->4830K(245760K), 0.0037545 secs] 435751K->219528K(791936K), 0.0038371 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:57:12.438+0200: 1624.383: [GC (Allocation Failure) 1624.383: [ParNew: 222715K->4352K(245760K), 0.0029987 secs] 437413K->219099K(791936K), 0.0030575 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:57:14.809+0200: 1626.753: [GC (Allocation Failure) 1626.753: [ParNew: 222848K->4359K(245760K), 0.0033360 secs] 437595K->219143K(791936K), 0.0034116 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:17.384+0200: 1629.328: [GC (Allocation Failure) 1629.328: [ParNew: 222855K->3721K(245760K), 0.0029316 secs] 437639K->218577K(791936K), 0.0030053 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:20.411+0200: 1632.356: [GC (Allocation Failure) 1632.356: [ParNew: 222217K->2765K(245760K), 0.0035450 secs] 437073K->217894K(791936K), 0.0036131 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:23.232+0200: 1635.177: [GC (Allocation Failure) 1635.177: [ParNew: 221261K->3600K(245760K), 0.0029857 secs] 436390K->218826K(791936K), 0.0030645 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:26.512+0200: 1638.457: [GC (Allocation Failure) 1638.457: [ParNew: 222096K->5266K(245760K), 0.0034634 secs] 437322K->220556K(791936K), 0.0035301 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:29.757+0200: 1641.702: [GC (Allocation Failure) 1641.702: [ParNew: 223762K->5015K(245760K), 0.0034284 secs] 439052K->220407K(791936K), 0.0035058 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:32.164+0200: 1644.108: [GC (Allocation Failure) 1644.108: [ParNew: 223511K->3319K(245760K), 0.0033971 secs] 438903K->218775K(791936K), 0.0035016 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:34.786+0200: 1646.730: [GC (Allocation Failure) 1646.730: [ParNew: 221815K->4781K(245760K), 0.0049987 secs] 437271K->220297K(791936K), 0.0050691 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:57:38.998+0200: 1650.942: [GC (Allocation Failure) 1650.942: [ParNew: 223071K->4196K(245760K), 0.0026101 secs] 438587K->219831K(791936K), 0.0026871 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:42.082+0200: 1654.026: [GC (Allocation Failure) 1654.026: [ParNew: 222692K->7231K(245760K), 0.0048625 secs] 438327K->222927K(791936K), 0.0049334 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:44.700+0200: 1656.644: [GC (Allocation Failure) 1656.644: [ParNew: 225727K->5237K(245760K), 0.0026824 secs] 441423K->220962K(791936K), 0.0027464 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:47.604+0200: 1659.549: [GC (Allocation Failure) 1659.549: [ParNew: 223733K->4004K(245760K), 0.0032376 secs] 439458K->219802K(791936K), 0.0033164 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:50.811+0200: 1662.755: [GC (Allocation Failure) 1662.756: [ParNew: 222500K->5354K(245760K), 0.0037064 secs] 438298K->221286K(791936K), 0.0037778 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:57:53.942+0200: 1665.887: [GC (Allocation Failure) 1665.887: [ParNew: 223850K->4533K(245760K), 0.0030790 secs] 439782K->220736K(791936K), 0.0031867 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:58.259+0200: 1670.204: [GC (Allocation Failure) 1670.204: [ParNew: 223029K->3646K(245760K), 0.0032399 secs] 439232K->219972K(791936K), 0.0033253 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:01.252+0200: 1673.197: [GC (Allocation Failure) 1673.197: [ParNew: 222142K->3566K(245760K), 0.0027813 secs] 438468K->220046K(791936K), 0.0028541 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:04.354+0200: 1676.298: [GC (Allocation Failure) 1676.298: [ParNew: 222062K->2976K(245760K), 0.0027431 secs] 438542K->219513K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:07.407+0200: 1679.352: [GC (Allocation Failure) 1679.352: [ParNew: 221472K->3500K(245760K), 0.0028527 secs] 438009K->220113K(791936K), 0.0029148 secs] [Times: user=0.05 sys=0.00, real=0.00 secs] +2016-04-14T22:58:11.487+0200: 1683.431: [GC (Allocation Failure) 1683.431: [ParNew: 221976K->2941K(245760K), 0.0025672 secs] 438588K->219622K(791936K), 0.0026377 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:15.622+0200: 1687.566: [GC (Allocation Failure) 1687.566: [ParNew: 221437K->3108K(245760K), 0.0031480 secs] 438118K->219865K(791936K), 0.0032227 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:18.458+0200: 1690.403: [GC (Allocation Failure) 1690.403: [ParNew: 221604K->2194K(245760K), 0.0027902 secs] 438361K->219033K(791936K), 0.0028467 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:21.598+0200: 1693.542: [GC (Allocation Failure) 1693.542: [ParNew: 220690K->2657K(245760K), 0.0028672 secs] 437529K->219543K(791936K), 0.0029353 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:24.622+0200: 1696.567: [GC (Allocation Failure) 1696.567: [ParNew: 221153K->4492K(245760K), 0.0031261 secs] 438039K->221422K(791936K), 0.0032147 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:27.395+0200: 1699.340: [GC (Allocation Failure) 1699.340: [ParNew: 222988K->4831K(245760K), 0.0033178 secs] 439918K->221953K(791936K), 0.0033957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:30.831+0200: 1702.776: [GC (Allocation Failure) 1702.776: [ParNew: 223327K->5281K(245760K), 0.0037144 secs] 440449K->222457K(791936K), 0.0037951 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:34.225+0200: 1706.170: [GC (Allocation Failure) 1706.170: [ParNew: 223777K->3503K(245760K), 0.0029680 secs] 440953K->220795K(791936K), 0.0030323 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:37.103+0200: 1709.048: [GC (Allocation Failure) 1709.048: [ParNew: 221999K->2840K(245760K), 0.0034792 secs] 439291K->220186K(791936K), 0.0035497 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:39.982+0200: 1711.927: [GC (Allocation Failure) 1711.927: [ParNew: 221336K->3799K(245760K), 0.0030076 secs] 438682K->221263K(791936K), 0.0030916 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:43.047+0200: 1714.991: [GC (Allocation Failure) 1714.991: [ParNew: 222295K->3252K(245760K), 0.0031485 secs] 439759K->220842K(791936K), 0.0032250 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:58:46.269+0200: 1718.214: [GC (Allocation Failure) 1718.214: [ParNew: 221748K->2456K(245760K), 0.0027688 secs] 439338K->220121K(791936K), 0.0028369 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:50.361+0200: 1722.305: [GC (Allocation Failure) 1722.305: [ParNew: 220952K->3158K(245760K), 0.0031093 secs] 438617K->220878K(791936K), 0.0031662 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:58:52.844+0200: 1724.789: [GC (Allocation Failure) 1724.789: [ParNew: 221654K->3351K(245760K), 0.0029535 secs] 439374K->221140K(791936K), 0.0030235 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:58:55.773+0200: 1727.718: [GC (Allocation Failure) 1727.718: [ParNew: 221847K->2718K(245760K), 0.0027580 secs] 439636K->220534K(791936K), 0.0028159 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:58.952+0200: 1730.896: [GC (Allocation Failure) 1730.896: [ParNew: 221214K->3100K(245760K), 0.0026447 secs] 439030K->220987K(791936K), 0.0027100 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:59:01.774+0200: 1733.718: [GC (Allocation Failure) 1733.718: [ParNew: 221596K->4566K(245760K), 0.0035184 secs] 439483K->222560K(791936K), 0.0035903 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:06.071+0200: 1738.016: [GC (Allocation Failure) 1738.016: [ParNew: 223062K->6864K(245760K), 0.0040918 secs] 441056K->225053K(791936K), 0.0041524 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:08.982+0200: 1740.927: [GC (Allocation Failure) 1740.927: [ParNew: 225360K->6574K(245760K), 0.0047379 secs] 443549K->224843K(791936K), 0.0048093 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:59:12.286+0200: 1744.230: [GC (Allocation Failure) 1744.231: [ParNew: 225070K->5009K(245760K), 0.0028551 secs] 443339K->223349K(791936K), 0.0029325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:16.272+0200: 1748.217: [GC (Allocation Failure) 1748.217: [ParNew: 223476K->3371K(245760K), 0.0028065 secs] 441816K->221787K(791936K), 0.0028691 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:19.587+0200: 1751.531: [GC (Allocation Failure) 1751.531: [ParNew: 221867K->3743K(245760K), 0.0028765 secs] 440283K->222200K(791936K), 0.0029577 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +Heap + par new generation total 245760K, used 147078K [0x00000000ce000000, 0x00000000deaa0000, 0x00000000deaa0000) + eden space 218496K, 65% used [0x00000000ce000000, 0x00000000d6bf9b58, 0x00000000db560000) + from space 27264K, 13% used [0x00000000db560000, 0x00000000db907cd0, 0x00000000dd000000) + to space 27264K, 0% used [0x00000000dd000000, 0x00000000dd000000, 0x00000000deaa0000) + concurrent mark-sweep generation total 546176K, used 218457K [0x00000000deaa0000, 0x0000000100000000, 0x0000000100000000) + Metaspace used 85838K, capacity 86786K, committed 87096K, reserved 1124352K + class space used 12176K, capacity 12408K, committed 12460K, reserved 1048576K +2016-04-14 23:26:45 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.5 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part1.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part1.txt new file mode 100644 index 00000000..7c75b3a5 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part1.txt @@ -0,0 +1,111 @@ +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9830208k free), swap 20473812k(10916924k free) +CommandLine flags: -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279621632 -XX:MaxTenuringThreshold=6 -XX:NewSize=279621632 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559239168 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:30:09.108+0200: 1.053: [GC (Allocation Failure) 1.053: [ParNew: 218496K->25704K(245760K), 0.0145305 secs] 218496K->25704K(791936K), 0.0146984 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:09.616+0200: 1.561: [GC (Allocation Failure) 1.561: [ParNew: 244200K->27249K(245760K), 0.0720052 secs] 244200K->51737K(791936K), 0.0720804 secs] [Times: user=0.39 sys=0.03, real=0.07 secs] +2016-04-14T22:30:10.444+0200: 2.388: [GC (Allocation Failure) 2.388: [ParNew: 245745K->15237K(245760K), 0.0069090 secs] 270233K->39725K(791936K), 0.0069837 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:10.981+0200: 2.925: [GC (Allocation Failure) 2.925: [ParNew: 233733K->14093K(245760K), 0.0089211 secs] 258221K->38581K(791936K), 0.0089958 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:11.343+0200: 3.287: [GC (Allocation Failure) 3.287: [ParNew: 232589K->15276K(245760K), 0.0064463 secs] 257077K->39763K(791936K), 0.0065181 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:11.927+0200: 3.871: [GC (Allocation Failure) 3.871: [ParNew: 233772K->20221K(245760K), 0.0092775 secs] 258259K->44709K(791936K), 0.0093442 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:12.876+0200: 4.821: [GC (Allocation Failure) 4.821: [ParNew: 238717K->12050K(245760K), 0.0094455 secs] 263205K->41221K(791936K), 0.0095252 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:12.886+0200: 4.830: [GC (CMS Initial Mark) [1 CMS-initial-mark: 29170K(546176K)] 45355K(791936K), 0.0017923 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:12.888+0200: 4.832: [CMS-concurrent-mark-start] +2016-04-14T22:30:12.935+0200: 4.879: [CMS-concurrent-mark: 0.044/0.047 secs] [Times: user=0.27 sys=0.02, real=0.05 secs] +2016-04-14T22:30:12.935+0200: 4.879: [CMS-concurrent-preclean-start] +2016-04-14T22:30:12.936+0200: 4.881: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:12.936+0200: 4.881: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:30:13.217+0200: 5.161: [CMS-concurrent-abortable-preclean: 0.146/0.280 secs] [Times: user=1.27 sys=0.05, real=0.28 secs] +2016-04-14T22:30:13.217+0200: 5.161: [GC (CMS Final Remark) [YG occupancy: 152796 K (245760 K)]2016-04-14T22:30:13.217+0200: 5.161: [GC (CMS Final Remark) 5.161: [ParNew: 152796K->9726K(245760K), 0.0090205 secs] 181966K->38896K(791936K), 0.0090755 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +5.170: [Rescan (parallel) , 0.0026815 secs]5.173: [weak refs processing, 0.0000261 secs]5.173: [class unloading, 0.0056168 secs]5.178: [scrub symbol table, 0.0046852 secs]5.183: [scrub string table, 0.0004777 secs][1 CMS-remark: 29170K(546176K)] 38896K(791936K), 0.0236219 secs] [Times: user=0.16 sys=0.00, real=0.02 secs] +2016-04-14T22:30:13.240+0200: 5.185: [CMS-concurrent-sweep-start] +2016-04-14T22:30:13.252+0200: 5.196: [CMS-concurrent-sweep: 0.010/0.011 secs] [Times: user=0.08 sys=0.00, real=0.01 secs] +2016-04-14T22:30:13.252+0200: 5.196: [CMS-concurrent-reset-start] +2016-04-14T22:30:13.254+0200: 5.198: [CMS-concurrent-reset: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:14.057+0200: 6.001: [GC (Allocation Failure) 6.001: [ParNew: 228222K->10667K(245760K), 0.0097156 secs] 257274K->42377K(791936K), 0.0098019 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] +2016-04-14T22:30:14.922+0200: 6.866: [GC (Allocation Failure) 6.866: [ParNew: 229163K->10064K(245760K), 0.0067733 secs] 260873K->42325K(791936K), 0.0068591 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:15.927+0200: 7.871: [GC (Allocation Failure) 7.871: [ParNew: 228560K->27264K(245760K), 0.0441992 secs] 260821K->88932K(791936K), 0.0442809 secs] [Times: user=0.28 sys=0.00, real=0.04 secs] +2016-04-14T22:30:17.343+0200: 9.287: [GC (Allocation Failure) 9.287: [ParNew: 245760K->27264K(245760K), 0.0450838 secs] 307428K->121805K(791936K), 0.0451505 secs] [Times: user=0.33 sys=0.03, real=0.05 secs] +2016-04-14T22:30:18.430+0200: 10.374: [GC (Allocation Failure) 10.374: [ParNew: 245760K->23558K(245760K), 0.0234936 secs] 340301K->142372K(791936K), 0.0235626 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:30:19.178+0200: 11.122: [GC (Allocation Failure) 11.122: [ParNew: 242054K->9219K(245760K), 0.0038721 secs] 360868K->128033K(791936K), 0.0039528 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.807+0200: 11.751: [GC (Allocation Failure) 11.752: [ParNew: 227715K->8958K(245760K), 0.0051690 secs] 346529K->127772K(791936K), 0.0052436 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:19.813+0200: 11.757: [GC (CMS Initial Mark) [1 CMS-initial-mark: 118813K(546176K)] 132109K(791936K), 0.0012955 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.814+0200: 11.758: [CMS-concurrent-mark-start] +2016-04-14T22:30:19.966+0200: 11.910: [CMS-concurrent-mark: 0.147/0.152 secs] [Times: user=0.52 sys=0.00, real=0.15 secs] +2016-04-14T22:30:19.966+0200: 11.910: [CMS-concurrent-preclean-start] +2016-04-14T22:30:19.967+0200: 11.912: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:19.967+0200: 11.912: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:30:20.426+0200: 12.370: [GC (Allocation Failure) 12.370: [ParNew: 227454K->8479K(245760K), 0.0052683 secs] 346268K->127293K(791936K), 0.0053458 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:20.755+0200: 12.699: [CMS-concurrent-abortable-preclean: 0.381/0.787 secs] [Times: user=1.31 sys=0.06, real=0.79 secs] +2016-04-14T22:30:20.755+0200: 12.699: [GC (CMS Final Remark) [YG occupancy: 130227 K (245760 K)]2016-04-14T22:30:20.755+0200: 12.699: [GC (CMS Final Remark) 12.699: [ParNew: 130227K->8045K(245760K), 0.0046544 secs] 249041K->126859K(791936K), 0.0047071 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +12.704: [Rescan (parallel) , 0.0017093 secs]12.706: [weak refs processing, 0.0000163 secs]12.706: [class unloading, 0.0062849 secs]12.712: [scrub symbol table, 0.0070224 secs]12.719: [scrub string table, 0.0006256 secs][1 CMS-remark: 118813K(546176K)] 126859K(791936K), 0.0215244 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] +2016-04-14T22:30:20.776+0200: 12.721: [CMS-concurrent-sweep-start] +2016-04-14T22:30:20.805+0200: 12.750: [CMS-concurrent-sweep: 0.029/0.029 secs] [Times: user=0.06 sys=0.00, real=0.03 secs] +2016-04-14T22:30:20.805+0200: 12.750: [CMS-concurrent-reset-start] +2016-04-14T22:30:20.806+0200: 12.751: [CMS-concurrent-reset: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:30:21.184+0200: 13.128: [GC (Allocation Failure) 13.128: [ParNew: 226541K->11933K(245760K), 0.0047612 secs] 338541K->123933K(791936K), 0.0048321 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:30:21.611+0200: 13.555: [GC (Allocation Failure) 13.555: [ParNew: 230429K->11105K(245760K), 0.0074222 secs] 342429K->125792K(791936K), 0.0075057 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:22.114+0200: 14.058: [GC (Allocation Failure) 14.058: [ParNew: 229601K->8340K(245760K), 0.0060385 secs] 344288K->123989K(791936K), 0.0061099 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:22.923+0200: 14.867: [GC (Allocation Failure) 14.867: [ParNew: 226836K->7416K(245760K), 0.0070159 secs] 342485K->124035K(791936K), 0.0070961 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:23.760+0200: 15.704: [GC (Allocation Failure) 15.704: [ParNew: 225912K->8337K(245760K), 0.0057913 secs] 342531K->125497K(791936K), 0.0058711 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:24.418+0200: 16.362: [GC (Allocation Failure) 16.362: [ParNew: 226833K->12460K(245760K), 0.0089659 secs] 343993K->129972K(791936K), 0.0090485 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:25.243+0200: 17.187: [GC (Allocation Failure) 17.187: [ParNew: 230956K->14959K(245760K), 0.0104312 secs] 348468K->133092K(791936K), 0.0105259 secs] [Times: user=0.05 sys=0.00, real=0.01 secs] +2016-04-14T22:30:25.956+0200: 17.901: [GC (Allocation Failure) 17.901: [ParNew: 233455K->17936K(245760K), 0.0094226 secs] 351588K->136405K(791936K), 0.0095001 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:26.430+0200: 18.374: [GC (Allocation Failure) 18.374: [ParNew: 236432K->21901K(245760K), 0.0125468 secs] 354901K->140803K(791936K), 0.0126210 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:26.948+0200: 18.892: [GC (Allocation Failure) 18.892: [ParNew: 240397K->17950K(245760K), 0.0146560 secs] 359299K->139457K(791936K), 0.0147646 secs] [Times: user=0.11 sys=0.02, real=0.02 secs] +2016-04-14T22:30:27.566+0200: 19.510: [GC (Allocation Failure) 19.510: [ParNew: 236446K->15283K(245760K), 0.0089300 secs] 357953K->137678K(791936K), 0.0090060 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:48.254+0200: 40.198: [GC (Allocation Failure) 40.198: [ParNew: 233779K->17470K(245760K), 0.0143560 secs] 356174K->141615K(791936K), 0.0144432 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] +2016-04-14T22:30:48.917+0200: 40.861: [GC (Allocation Failure) 40.862: [ParNew: 235966K->12231K(245760K), 0.0110489 secs] 360111K->138497K(791936K), 0.0111254 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:30:49.393+0200: 41.337: [GC (Allocation Failure) 41.337: [ParNew: 230727K->12480K(245760K), 0.0103244 secs] 356993K->140491K(791936K), 0.0104028 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:30:57.957+0200: 49.901: [GC (Allocation Failure) 49.901: [ParNew: 230821K->14895K(245760K), 0.0089006 secs] 358832K->143907K(791936K), 0.0089804 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:00.935+0200: 52.879: [GC (Allocation Failure) 52.879: [ParNew: 233391K->27264K(245760K), 0.0188233 secs] 362403K->157581K(791936K), 0.0189124 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:31:05.525+0200: 57.469: [GC (Allocation Failure) 57.469: [ParNew: 245760K->19959K(245760K), 0.0251739 secs] 376077K->165797K(791936K), 0.0252523 secs] [Times: user=0.16 sys=0.00, real=0.02 secs] +2016-04-14T22:31:08.933+0200: 60.878: [GC (Allocation Failure) 60.878: [ParNew: 238455K->14553K(245760K), 0.0079676 secs] 384293K->160392K(791936K), 0.0080450 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:31:12.924+0200: 64.869: [GC (Allocation Failure) 64.869: [ParNew: 232848K->9841K(245760K), 0.0055198 secs] 378687K->155680K(791936K), 0.0056061 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:16.960+0200: 68.904: [GC (Allocation Failure) 68.904: [ParNew: 228337K->15322K(245760K), 0.0077418 secs] 374176K->161160K(791936K), 0.0078197 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:21.117+0200: 73.061: [GC (Allocation Failure) 73.061: [ParNew: 233818K->18005K(245760K), 0.0075001 secs] 379656K->163843K(791936K), 0.0075944 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:25.162+0200: 77.106: [GC (Allocation Failure) 77.106: [ParNew: 236501K->20469K(245760K), 0.0075608 secs] 382339K->166308K(791936K), 0.0076387 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:29.360+0200: 81.304: [GC (Allocation Failure) 81.304: [ParNew: 238965K->19939K(245760K), 0.0087275 secs] 384804K->166397K(791936K), 0.0088134 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:31:33.762+0200: 85.706: [GC (Allocation Failure) 85.706: [ParNew: 238416K->12719K(245760K), 0.0112779 secs] 384874K->165752K(791936K), 0.0113647 secs] [Times: user=0.11 sys=0.02, real=0.01 secs] +2016-04-14T22:31:37.977+0200: 89.922: [GC (Allocation Failure) 89.922: [ParNew: 231215K->9204K(245760K), 0.0063138 secs] 384248K->162362K(791936K), 0.0063894 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:42.193+0200: 94.138: [GC (Allocation Failure) 94.138: [ParNew: 227700K->7012K(245760K), 0.0069767 secs] 380858K->162825K(791936K), 0.0070742 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:31:46.587+0200: 98.531: [GC (Allocation Failure) 98.531: [ParNew: 224894K->3437K(245760K), 0.0031919 secs] 380707K->159406K(791936K), 0.0032842 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:50.807+0200: 102.751: [GC (Allocation Failure) 102.751: [ParNew: 221933K->3581K(245760K), 0.0038287 secs] 377902K->159723K(791936K), 0.0039154 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:55.429+0200: 107.374: [GC (Allocation Failure) 107.374: [ParNew: 222077K->3963K(245760K), 0.0034396 secs] 378219K->160253K(791936K), 0.0035250 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:31:59.815+0200: 111.760: [GC (Allocation Failure) 111.760: [ParNew: 221879K->7461K(245760K), 0.0061374 secs] 378169K->163793K(791936K), 0.0062373 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:05.223+0200: 117.167: [GC (Allocation Failure) 117.167: [ParNew: 225826K->14672K(245760K), 0.0071684 secs] 382158K->171076K(791936K), 0.0072519 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:09.231+0200: 121.175: [GC (CMS Initial Mark) [1 CMS-initial-mark: 156404K(546176K)] 318274K(791936K), 0.0164077 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:32:09.247+0200: 121.192: [CMS-concurrent-mark-start] +2016-04-14T22:32:09.414+0200: 121.359: [CMS-concurrent-mark: 0.168/0.168 secs] [Times: user=0.34 sys=0.00, real=0.17 secs] +2016-04-14T22:32:09.415+0200: 121.359: [CMS-concurrent-preclean-start] +2016-04-14T22:32:09.417+0200: 121.362: [CMS-concurrent-preclean: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:32:09.417+0200: 121.362: [CMS-concurrent-abortable-preclean-start] +2016-04-14T22:32:10.991+0200: 122.935: [GC (Allocation Failure) 122.935: [ParNew: 233168K->15672K(245760K), 0.0074577 secs] 389572K->172176K(791936K), 0.0075276 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:13.941+0200: 125.885: [CMS-concurrent-abortable-preclean: 2.165/4.524 secs] [Times: user=2.56 sys=0.03, real=4.52 secs] +2016-04-14T22:32:13.941+0200: 125.885: [GC (CMS Final Remark) [YG occupancy: 130278 K (245760 K)]2016-04-14T22:32:13.941+0200: 125.885: [GC (CMS Final Remark) 125.885: [ParNew: 130278K->11066K(245760K), 0.0061300 secs] 286782K->167616K(791936K), 0.0062009 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +125.892: [Rescan (parallel) , 0.0029675 secs]125.895: [weak refs processing, 0.0000387 secs]125.895: [class unloading, 0.0174228 secs]125.912: [scrub symbol table, 0.0124708 secs]125.925: [scrub string table, 0.0009195 secs][1 CMS-remark: 156550K(546176K)] 167616K(791936K), 0.0416777 secs] [Times: user=0.03 sys=0.00, real=0.04 secs] +2016-04-14T22:32:13.982+0200: 125.927: [CMS-concurrent-sweep-start] +2016-04-14T22:32:14.057+0200: 126.001: [CMS-concurrent-sweep: 0.072/0.074 secs] [Times: user=0.11 sys=0.05, real=0.07 secs] +2016-04-14T22:32:14.057+0200: 126.001: [CMS-concurrent-reset-start] +2016-04-14T22:32:14.058+0200: 126.002: [CMS-concurrent-reset: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:32:20.812+0200: 132.756: [GC (Allocation Failure) 132.756: [ParNew: 229562K->15616K(245760K), 0.0080319 secs] 363844K->149923K(791936K), 0.0081145 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:32:28.094+0200: 140.038: [GC (Allocation Failure) 140.038: [ParNew: 233959K->12202K(245760K), 0.0052133 secs] 368267K->146522K(791936K), 0.0052958 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:32:34.589+0200: 146.533: [GC (Allocation Failure) 146.533: [ParNew: 230384K->17027K(245760K), 0.0066151 secs] 364704K->151398K(791936K), 0.0067131 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] +2016-04-14T22:32:42.443+0200: 154.387: [GC (Allocation Failure) 154.387: [ParNew: 235523K->18056K(245760K), 0.0079354 secs] 369894K->152468K(791936K), 0.0080068 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:50.946+0200: 162.891: [GC (Allocation Failure) 162.891: [ParNew: 236552K->14803K(245760K), 0.0066501 secs] 370964K->149308K(791936K), 0.0067360 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:32:57.222+0200: 169.166: [GC (Allocation Failure) 169.166: [ParNew: 233299K->11573K(245760K), 0.0057773 secs] 367804K->146086K(791936K), 0.0058547 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:06.953+0200: 178.898: [GC (Allocation Failure) 178.898: [ParNew: 229692K->19448K(245760K), 0.0068050 secs] 364205K->154082K(791936K), 0.0068867 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:33:12.777+0200: 184.722: [GC (Allocation Failure) 184.722: [ParNew: 237944K->23329K(245760K), 0.0091520 secs] 372578K->158309K(791936K), 0.0092682 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:33:21.509+0200: 193.454: [GC (Allocation Failure) 193.454: [ParNew: 241225K->15681K(245760K), 0.0092080 secs] 376206K->153956K(791936K), 0.0092990 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] +2016-04-14T22:33:27.883+0200: 199.827: [GC (Allocation Failure) 199.827: [ParNew: 234177K->11328K(245760K), 0.0062601 secs] 372452K->149603K(791936K), 0.0063502 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:33.945+0200: 205.889: [GC (Allocation Failure) 205.889: [ParNew: 229824K->15198K(245760K), 0.0064201 secs] 368099K->153473K(791936K), 0.0064911 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:33:39.733+0200: 211.677: [GC (Allocation Failure) 211.677: [ParNew: 233694K->15545K(245760K), 0.0072720 secs] 371969K->153820K(791936K), 0.0073494 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:35:55.404+0200: 347.349: [GC (Allocation Failure) 347.349: [ParNew: 234041K->11013K(245760K), 0.0035054 secs] 372316K->149288K(791936K), 0.0035814 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:37:07.025+0200: 418.970: [GC (Allocation Failure) 418.970: [ParNew: 229509K->18187K(245760K), 0.0112901 secs] 367784K->156462K(791936K), 0.0113796 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:37:08.322+0200: 420.267: [GC (Allocation Failure) 420.267: [ParNew: 236683K->12354K(245760K), 0.0215841 secs] 374958K->165970K(791936K), 0.0216564 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] +2016-04-14T22:37:10.425+0200: 422.369: [GC (Allocation Failure) 422.369: [ParNew: 230850K->8802K(245760K), 0.0044029 secs] 384466K->162417K(791936K), 0.0044785 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:12.206+0200: 424.150: [GC (Allocation Failure) 424.150: [ParNew: 227298K->9443K(245760K), 0.0055958 secs] 380913K->163058K(791936K), 0.0056929 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:14.826+0200: 426.770: [GC (Allocation Failure) 426.770: [ParNew: 227939K->8008K(245760K), 0.0042191 secs] 381554K->161623K(791936K), 0.0043040 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:37:17.987+0200: 429.932: [GC (Allocation Failure) 429.932: [ParNew: 226504K->6774K(245760K), 0.0034848 secs] 380119K->160389K(791936K), 0.0035576 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:19.931+0200: 431.876: [GC (Allocation Failure) 431.876: [ParNew: 225270K->9058K(245760K), 0.0052954 secs] 378885K->162673K(791936K), 0.0053686 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:22.190+0200: 434.135: [GC (Allocation Failure) 434.135: [ParNew: 227554K->6048K(245760K), 0.0049371 secs] 381169K->161621K(791936K), 0.0050234 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14 22:37:22 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.0 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part2.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part2.txt new file mode 100644 index 00000000..fda708d4 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part2.txt @@ -0,0 +1,98 @@ +2016-04-14 22:37:22 GC log file created logs/garbageCollection.log.1 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9157704k free), swap 20473812k(9756156k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:37:25.036+0200: 436.981: [GC (Allocation Failure) 436.981: [ParNew: 224544K->9414K(245760K), 0.0053560 secs] 380117K->165822K(791936K), 0.0055366 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:27.748+0200: 439.693: [GC (Allocation Failure) 439.693: [ParNew: 227910K->10721K(245760K), 0.0066371 secs] 384318K->167305K(791936K), 0.0067168 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:37:31.049+0200: 442.994: [GC (Allocation Failure) 442.994: [ParNew: 229212K->8140K(245760K), 0.0032898 secs] 385797K->164920K(791936K), 0.0033720 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:33.367+0200: 445.311: [GC (Allocation Failure) 445.311: [ParNew: 226636K->8204K(245760K), 0.0048377 secs] 383416K->165103K(791936K), 0.0049292 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:35.946+0200: 447.891: [GC (Allocation Failure) 447.891: [ParNew: 226700K->9674K(245760K), 0.0046385 secs] 383599K->166843K(791936K), 0.0047085 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:38.812+0200: 450.756: [GC (Allocation Failure) 450.756: [ParNew: 228170K->8906K(245760K), 0.0044888 secs] 385339K->166212K(791936K), 0.0045592 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:37:42.119+0200: 454.063: [GC (Allocation Failure) 454.063: [ParNew: 227402K->6247K(245760K), 0.0034583 secs] 384708K->164342K(791936K), 0.0035357 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:45.662+0200: 457.607: [GC (Allocation Failure) 457.607: [ParNew: 224743K->5870K(245760K), 0.0037382 secs] 382838K->164149K(791936K), 0.0038119 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:48.381+0200: 460.326: [GC (Allocation Failure) 460.326: [ParNew: 224366K->11363K(245760K), 0.0082353 secs] 382645K->170289K(791936K), 0.0082960 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:37:50.859+0200: 462.803: [GC (Allocation Failure) 462.803: [ParNew: 229859K->8067K(245760K), 0.0044809 secs] 388785K->167183K(791936K), 0.0045588 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:37:55.315+0200: 467.260: [GC (Allocation Failure) 467.260: [ParNew: 226563K->6586K(245760K), 0.0044323 secs] 385679K->165875K(791936K), 0.0045438 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:37:58.106+0200: 470.050: [GC (Allocation Failure) 470.050: [ParNew: 225082K->3777K(245760K), 0.0043610 secs] 384371K->163268K(791936K), 0.0044239 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:01.600+0200: 473.544: [GC (Allocation Failure) 473.544: [ParNew: 222273K->10619K(245760K), 0.0059452 secs] 381764K->170426K(791936K), 0.0060129 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:05.156+0200: 477.100: [GC (Allocation Failure) 477.100: [ParNew: 229115K->5679K(245760K), 0.0040484 secs] 388922K->165637K(791936K), 0.0041142 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:38:09.035+0200: 480.979: [GC (Allocation Failure) 480.979: [ParNew: 224175K->5234K(245760K), 0.0035893 secs] 384133K->165360K(791936K), 0.0036957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:12.052+0200: 483.996: [GC (Allocation Failure) 483.996: [ParNew: 223730K->3627K(245760K), 0.0038506 secs] 383856K->163989K(791936K), 0.0039140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:15.386+0200: 487.330: [GC (Allocation Failure) 487.330: [ParNew: 221982K->4698K(245760K), 0.0034564 secs] 382344K->165237K(791936K), 0.0035310 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:19.035+0200: 490.979: [GC (Allocation Failure) 490.979: [ParNew: 223120K->4870K(245760K), 0.0042369 secs] 383660K->165675K(791936K), 0.0043157 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:21.884+0200: 493.829: [GC (Allocation Failure) 493.829: [ParNew: 223366K->5956K(245760K), 0.0040848 secs] 384171K->166969K(791936K), 0.0041510 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:25.454+0200: 497.398: [GC (Allocation Failure) 497.398: [ParNew: 224428K->4146K(245760K), 0.0039686 secs] 385441K->165447K(791936K), 0.0040605 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:38:28.309+0200: 500.253: [GC (Allocation Failure) 500.253: [ParNew: 222642K->7461K(245760K), 0.0047188 secs] 383943K->168949K(791936K), 0.0047887 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:38:32.980+0200: 504.924: [GC (Allocation Failure) 504.924: [ParNew: 225428K->5503K(245760K), 0.0035147 secs] 386916K->167234K(791936K), 0.0035945 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:35.379+0200: 507.323: [GC (Allocation Failure) 507.323: [ParNew: 223999K->4657K(245760K), 0.0034340 secs] 385730K->166681K(791936K), 0.0035002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:39.220+0200: 511.164: [GC (Allocation Failure) 511.164: [ParNew: 223153K->9001K(245760K), 0.0057689 secs] 385177K->171384K(791936K), 0.0058435 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:38:42.542+0200: 514.486: [GC (Allocation Failure) 514.486: [ParNew: 227497K->7094K(245760K), 0.0044258 secs] 389880K->169788K(791936K), 0.0045140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:38:46.531+0200: 518.475: [GC (Allocation Failure) 518.475: [ParNew: 225129K->8581K(245760K), 0.0044431 secs] 387823K->171571K(791936K), 0.0045331 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:38:49.341+0200: 521.285: [GC (Allocation Failure) 521.285: [ParNew: 227077K->10405K(245760K), 0.0054465 secs] 390067K->173768K(791936K), 0.0055296 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:38:52.928+0200: 524.872: [GC (Allocation Failure) 524.872: [ParNew: 228901K->12935K(245760K), 0.0065288 secs] 392264K->176620K(791936K), 0.0066091 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:55.832+0200: 527.776: [GC (Allocation Failure) 527.776: [ParNew: 231431K->13010K(245760K), 0.0057740 secs] 395116K->176895K(791936K), 0.0058412 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:38:58.274+0200: 530.218: [GC (Allocation Failure) 530.218: [ParNew: 231506K->5623K(245760K), 0.0038511 secs] 395391K->169696K(791936K), 0.0039425 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:00.796+0200: 532.741: [GC (Allocation Failure) 532.741: [ParNew: 224119K->8959K(245760K), 0.0055076 secs] 388192K->173445K(791936K), 0.0055800 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:39:03.043+0200: 534.988: [GC (Allocation Failure) 534.988: [ParNew: 227455K->7190K(245760K), 0.0037550 secs] 391941K->171918K(791936K), 0.0038259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:06.478+0200: 538.422: [GC (Allocation Failure) 538.423: [ParNew: 225686K->8085K(245760K), 0.0061346 secs] 390414K->173367K(791936K), 0.0062279 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:08.854+0200: 540.799: [GC (Allocation Failure) 540.799: [ParNew: 226581K->7617K(245760K), 0.0045074 secs] 391863K->173398K(791936K), 0.0045672 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:11.134+0200: 543.079: [GC (Allocation Failure) 543.079: [ParNew: 226113K->5413K(245760K), 0.0034111 secs] 391894K->171279K(791936K), 0.0034900 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:13.367+0200: 545.312: [GC (Allocation Failure) 545.312: [ParNew: 223909K->7626K(245760K), 0.0070089 secs] 389775K->173624K(791936K), 0.0071013 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:15.786+0200: 547.730: [GC (Allocation Failure) 547.730: [ParNew: 226122K->5650K(245760K), 0.0037344 secs] 392120K->171840K(791936K), 0.0038025 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:18.046+0200: 549.991: [GC (Allocation Failure) 549.991: [ParNew: 224146K->6509K(245760K), 0.0046241 secs] 390336K->172766K(791936K), 0.0046843 secs] [Times: user=0.08 sys=0.00, real=0.01 secs] +2016-04-14T22:39:21.004+0200: 552.948: [GC (Allocation Failure) 552.948: [ParNew: 225005K->4942K(245760K), 0.0035646 secs] 391262K->171436K(791936K), 0.0036323 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:23.251+0200: 555.195: [GC (Allocation Failure) 555.195: [ParNew: 223438K->7667K(245760K), 0.0042336 secs] 389932K->174245K(791936K), 0.0043101 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:25.925+0200: 557.869: [GC (Allocation Failure) 557.869: [ParNew: 226163K->5507K(245760K), 0.0027300 secs] 392741K->172154K(791936K), 0.0027981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:28.017+0200: 559.962: [GC (Allocation Failure) 559.962: [ParNew: 224003K->5888K(245760K), 0.0045527 secs] 390650K->172690K(791936K), 0.0046222 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:30.554+0200: 562.498: [GC (Allocation Failure) 562.498: [ParNew: 224384K->7720K(245760K), 0.0054139 secs] 391186K->174728K(791936K), 0.0055030 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:39:33.392+0200: 565.336: [GC (Allocation Failure) 565.336: [ParNew: 226216K->5736K(245760K), 0.0034340 secs] 393224K->172789K(791936K), 0.0035478 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:35.833+0200: 567.778: [GC (Allocation Failure) 567.778: [ParNew: 224232K->4684K(245760K), 0.0025831 secs] 391285K->172417K(791936K), 0.0026559 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:38.305+0200: 570.249: [GC (Allocation Failure) 570.249: [ParNew: 223171K->3401K(245760K), 0.0028625 secs] 390904K->171268K(791936K), 0.0029442 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:40.753+0200: 572.698: [GC (Allocation Failure) 572.698: [ParNew: 221897K->5123K(245760K), 0.0040894 secs] 389764K->173077K(791936K), 0.0041520 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:43.482+0200: 575.426: [GC (Allocation Failure) 575.426: [ParNew: 223619K->7420K(245760K), 0.0048755 secs] 391573K->175424K(791936K), 0.0049520 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:46.032+0200: 577.976: [GC (Allocation Failure) 577.976: [ParNew: 225916K->7578K(245760K), 0.0046880 secs] 393920K->175741K(791936K), 0.0047556 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:39:48.305+0200: 580.249: [GC (Allocation Failure) 580.249: [ParNew: 226074K->6064K(245760K), 0.0038226 secs] 394237K->174286K(791936K), 0.0039000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:50.984+0200: 582.929: [GC (Allocation Failure) 582.929: [ParNew: 224560K->6172K(245760K), 0.0038161 secs] 392782K->174655K(791936K), 0.0038949 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:39:53.170+0200: 585.114: [GC (Allocation Failure) 585.114: [ParNew: 224668K->5406K(245760K), 0.0035194 secs] 393151K->174154K(791936K), 0.0035861 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:55.563+0200: 587.508: [GC (Allocation Failure) 587.508: [ParNew: 223902K->8579K(245760K), 0.0042089 secs] 392650K->177412K(791936K), 0.0042751 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:39:57.893+0200: 589.838: [GC (Allocation Failure) 589.838: [ParNew: 227075K->5537K(245760K), 0.0029358 secs] 395908K->174435K(791936K), 0.0030099 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:39:59.891+0200: 591.836: [GC (Allocation Failure) 591.836: [ParNew: 224033K->2822K(245760K), 0.0027977 secs] 392931K->171886K(791936K), 0.0028746 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:40:02.539+0200: 594.483: [GC (Allocation Failure) 594.484: [ParNew: 221318K->4828K(245760K), 0.0040932 secs] 390382K->173991K(791936K), 0.0041762 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:05.162+0200: 597.107: [GC (Allocation Failure) 597.107: [ParNew: 223324K->7778K(245760K), 0.0057395 secs] 392487K->177054K(791936K), 0.0058697 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:07.684+0200: 599.629: [GC (Allocation Failure) 599.629: [ParNew: 225859K->5677K(245760K), 0.0025700 secs] 395136K->175008K(791936K), 0.0026325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:09.891+0200: 601.835: [GC (Allocation Failure) 601.835: [ParNew: 224173K->4139K(245760K), 0.0027813 secs] 393504K->173508K(791936K), 0.0028663 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:40:12.168+0200: 604.113: [GC (Allocation Failure) 604.113: [ParNew: 222635K->2981K(245760K), 0.0029157 secs] 392004K->172433K(791936K), 0.0029759 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:15.103+0200: 607.047: [GC (Allocation Failure) 607.047: [ParNew: 221311K->2340K(245760K), 0.0026092 secs] 390763K->171987K(791936K), 0.0026950 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:18.131+0200: 610.075: [GC (Allocation Failure) 610.075: [ParNew: 220836K->2982K(245760K), 0.0028779 secs] 390483K->172689K(791936K), 0.0029456 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:21.346+0200: 613.290: [GC (Allocation Failure) 613.290: [ParNew: 221478K->4619K(245760K), 0.0037881 secs] 391185K->174373K(791936K), 0.0038525 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:23.988+0200: 615.932: [GC (Allocation Failure) 615.932: [ParNew: 223115K->7632K(245760K), 0.0055011 secs] 392869K->177487K(791936K), 0.0055706 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:26.572+0200: 618.517: [GC (Allocation Failure) 618.517: [ParNew: 226128K->6262K(245760K), 0.0032880 secs] 395983K->176217K(791936K), 0.0033734 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:28.531+0200: 620.476: [GC (Allocation Failure) 620.476: [ParNew: 224758K->5992K(245760K), 0.0045826 secs] 394713K->176079K(791936K), 0.0046507 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:40:30.963+0200: 622.908: [GC (Allocation Failure) 622.908: [ParNew: 224488K->7154K(245760K), 0.0050677 secs] 394575K->177311K(791936K), 0.0051414 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:40:33.949+0200: 625.893: [GC (Allocation Failure) 625.893: [ParNew: 225650K->5471K(245760K), 0.0037246 secs] 395807K->175692K(791936K), 0.0037997 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:36.634+0200: 628.578: [GC (Allocation Failure) 628.578: [ParNew: 223967K->7978K(245760K), 0.0044790 secs] 394188K->178348K(791936K), 0.0045448 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:39.084+0200: 631.028: [GC (Allocation Failure) 631.028: [ParNew: 226474K->5528K(245760K), 0.0036290 secs] 396844K->176020K(791936K), 0.0036948 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:42.181+0200: 634.126: [GC (Allocation Failure) 634.126: [ParNew: 224024K->3713K(245760K), 0.0033608 secs] 394516K->174412K(791936K), 0.0034293 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:44.460+0200: 636.405: [GC (Allocation Failure) 636.405: [ParNew: 222209K->3674K(245760K), 0.0033668 secs] 392908K->174513K(791936K), 0.0034321 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:47.236+0200: 639.180: [GC (Allocation Failure) 639.180: [ParNew: 222083K->2755K(245760K), 0.0032371 secs] 392922K->173678K(791936K), 0.0034083 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:40:50.171+0200: 642.115: [GC (Allocation Failure) 642.115: [ParNew: 221251K->8190K(245760K), 0.0059107 secs] 392174K->179202K(791936K), 0.0059998 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:40:52.675+0200: 644.620: [GC (Allocation Failure) 644.620: [ParNew: 226638K->7518K(245760K), 0.0034988 secs] 397651K->178598K(791936K), 0.0035744 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:55.301+0200: 647.245: [GC (Allocation Failure) 647.245: [ParNew: 226014K->5297K(245760K), 0.0034111 secs] 397094K->176505K(791936K), 0.0034774 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:40:57.756+0200: 649.701: [GC (Allocation Failure) 649.701: [ParNew: 223793K->9664K(245760K), 0.0061328 secs] 395001K->181033K(791936K), 0.0061920 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:00.696+0200: 652.640: [GC (Allocation Failure) 652.640: [ParNew: 228160K->5738K(245760K), 0.0030309 secs] 399529K->177173K(791936K), 0.0030995 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:03.932+0200: 655.876: [GC (Allocation Failure) 655.876: [ParNew: 224234K->4818K(245760K), 0.0035422 secs] 395669K->176385K(791936K), 0.0036071 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:07.148+0200: 659.092: [GC (Allocation Failure) 659.092: [ParNew: 223314K->3752K(245760K), 0.0029059 secs] 394881K->175445K(791936K), 0.0029759 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:10.032+0200: 661.977: [GC (Allocation Failure) 661.977: [ParNew: 222248K->3172K(245760K), 0.0025868 secs] 393941K->174954K(791936K), 0.0026638 secs] [Times: user=0.06 sys=0.02, real=0.00 secs] +2016-04-14T22:41:12.414+0200: 664.358: [GC (Allocation Failure) 664.358: [ParNew: 221668K->4124K(245760K), 0.0037433 secs] 393450K->175960K(791936K), 0.0038273 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:14.820+0200: 666.764: [GC (Allocation Failure) 666.764: [ParNew: 222620K->4404K(245760K), 0.0039084 secs] 394456K->176327K(791936K), 0.0040195 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:17.459+0200: 669.403: [GC (Allocation Failure) 669.404: [ParNew: 222900K->3492K(245760K), 0.0029124 secs] 394823K->175458K(791936K), 0.0029749 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:19.833+0200: 671.777: [GC (Allocation Failure) 671.777: [ParNew: 221988K->7545K(245760K), 0.0045546 secs] 393954K->179588K(791936K), 0.0046259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:22.702+0200: 674.646: [GC (Allocation Failure) 674.646: [ParNew: 226041K->5724K(245760K), 0.0040017 secs] 398084K->177893K(791936K), 0.0040685 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:25.118+0200: 677.062: [GC (Allocation Failure) 677.062: [ParNew: 224220K->5929K(245760K), 0.0035133 secs] 396389K->178146K(791936K), 0.0035768 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:27.339+0200: 679.284: [GC (Allocation Failure) 679.284: [ParNew: 224425K->7742K(245760K), 0.0057269 secs] 396642K->180073K(791936K), 0.0058141 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:29.650+0200: 681.595: [GC (Allocation Failure) 681.595: [ParNew: 226238K->6468K(245760K), 0.0040129 secs] 398569K->178853K(791936K), 0.0040922 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:31.615+0200: 683.559: [GC (Allocation Failure) 683.559: [ParNew: 224964K->5614K(245760K), 0.0027300 secs] 397349K->178085K(791936K), 0.0027986 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:34.359+0200: 686.303: [GC (Allocation Failure) 686.303: [ParNew: 224110K->3983K(245760K), 0.0033225 secs] 396581K->176663K(791936K), 0.0034027 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:41:37.920+0200: 689.864: [GC (Allocation Failure) 689.864: [ParNew: 222479K->4023K(245760K), 0.0028266 secs] 395159K->176799K(791936K), 0.0029064 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:40.506+0200: 692.450: [GC (Allocation Failure) 692.450: [ParNew: 222519K->3455K(245760K), 0.0030225 secs] 395295K->176288K(791936K), 0.0030832 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:41:41 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.1 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part3.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part3.txt new file mode 100644 index 00000000..860301dd --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part3.txt @@ -0,0 +1,98 @@ +2016-04-14 22:41:41 GC log file created logs/garbageCollection.log.2 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9123052k free), swap 20473812k(9799988k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:41:43.728+0200: 695.673: [GC (Allocation Failure) 695.673: [ParNew: 221951K->7124K(245760K), 0.0058062 secs] 394784K->180012K(791936K), 0.0059938 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:46.127+0200: 698.072: [GC (Allocation Failure) 698.072: [ParNew: 225620K->4991K(245760K), 0.0030253 secs] 398508K->177993K(791936K), 0.0030832 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:41:48.685+0200: 700.630: [GC (Allocation Failure) 700.630: [ParNew: 223487K->5368K(245760K), 0.0042355 secs] 396489K->178793K(791936K), 0.0043045 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:52.648+0200: 704.592: [GC (Allocation Failure) 704.592: [ParNew: 223864K->6019K(245760K), 0.0048191 secs] 397289K->179605K(791936K), 0.0049021 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:41:56.360+0200: 708.304: [GC (Allocation Failure) 708.304: [ParNew: 224515K->4943K(245760K), 0.0031196 secs] 398101K->178571K(791936K), 0.0031900 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:41:59.467+0200: 711.412: [GC (Allocation Failure) 711.412: [ParNew: 223224K->4605K(245760K), 0.0039868 secs] 396852K->178314K(791936K), 0.0040601 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:42:02.793+0200: 714.738: [GC (Allocation Failure) 714.738: [ParNew: 223101K->7488K(245760K), 0.0051727 secs] 396810K->181278K(791936K), 0.0052380 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] +2016-04-14T22:42:05.177+0200: 717.122: [GC (Allocation Failure) 717.122: [ParNew: 225984K->5471K(245760K), 0.0035889 secs] 399774K->179367K(791936K), 0.0036621 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:08.046+0200: 719.991: [GC (Allocation Failure) 719.991: [ParNew: 223967K->4630K(245760K), 0.0032343 secs] 397863K->178626K(791936K), 0.0032973 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:11.388+0200: 723.333: [GC (Allocation Failure) 723.333: [ParNew: 223126K->4415K(245760K), 0.0040078 secs] 397122K->178923K(791936K), 0.0040797 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:14.750+0200: 726.694: [GC (Allocation Failure) 726.694: [ParNew: 222490K->5052K(245760K), 0.0047967 secs] 396999K->180026K(791936K), 0.0048746 secs] [Times: user=0.11 sys=0.02, real=0.01 secs] +2016-04-14T22:42:17.907+0200: 729.851: [GC (Allocation Failure) 729.851: [ParNew: 223548K->5681K(245760K), 0.0042481 secs] 398522K->180966K(791936K), 0.0043241 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:42:20.103+0200: 732.047: [GC (Allocation Failure) 732.047: [ParNew: 224177K->3480K(245760K), 0.0032558 secs] 399462K->178875K(791936K), 0.0033197 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:23.214+0200: 735.158: [GC (Allocation Failure) 735.158: [ParNew: 221976K->5608K(245760K), 0.0039752 secs] 397371K->181066K(791936K), 0.0040423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:26.442+0200: 738.387: [GC (Allocation Failure) 738.387: [ParNew: 224104K->5021K(245760K), 0.0035795 secs] 399562K->180577K(791936K), 0.0037237 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:29.233+0200: 741.177: [GC (Allocation Failure) 741.177: [ParNew: 223517K->5152K(245760K), 0.0044874 secs] 399073K->180768K(791936K), 0.0045513 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:42:31.265+0200: 743.209: [GC (Allocation Failure) 743.209: [ParNew: 223648K->6752K(245760K), 0.0042616 secs] 399264K->182631K(791936K), 0.0043404 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:33.440+0200: 745.385: [GC (Allocation Failure) 745.385: [ParNew: 225248K->5753K(245760K), 0.0043124 secs] 401127K->181753K(791936K), 0.0043927 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:36.018+0200: 747.962: [GC (Allocation Failure) 747.962: [ParNew: 224249K->6526K(245760K), 0.0040311 secs] 400249K->182663K(791936K), 0.0041006 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:38.361+0200: 750.305: [GC (Allocation Failure) 750.305: [ParNew: 225022K->8935K(245760K), 0.0045723 secs] 401159K->185402K(791936K), 0.0046801 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:41.216+0200: 753.161: [GC (Allocation Failure) 753.161: [ParNew: 227431K->6610K(245760K), 0.0043054 secs] 403898K->183470K(791936K), 0.0043731 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:42:44.007+0200: 755.951: [GC (Allocation Failure) 755.951: [ParNew: 225106K->8492K(245760K), 0.0056406 secs] 401966K->185500K(791936K), 0.0057087 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:42:46.255+0200: 758.199: [GC (Allocation Failure) 758.199: [ParNew: 226988K->6509K(245760K), 0.0044892 secs] 403996K->183578K(791936K), 0.0045564 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:48.538+0200: 760.483: [GC (Allocation Failure) 760.483: [ParNew: 224857K->6535K(245760K), 0.0044958 secs] 401927K->183751K(791936K), 0.0045765 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:50.672+0200: 762.616: [GC (Allocation Failure) 762.616: [ParNew: 225031K->7192K(245760K), 0.0043656 secs] 402247K->184491K(791936K), 0.0044393 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:42:52.972+0200: 764.917: [GC (Allocation Failure) 764.917: [ParNew: 225688K->7737K(245760K), 0.0053878 secs] 402987K->185100K(791936K), 0.0054885 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:42:55.134+0200: 767.079: [GC (Allocation Failure) 767.079: [ParNew: 226233K->5607K(245760K), 0.0038525 secs] 403596K->183024K(791936K), 0.0039159 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:42:57.983+0200: 769.928: [GC (Allocation Failure) 769.928: [ParNew: 224103K->7258K(245760K), 0.0040507 secs] 401520K->184727K(791936K), 0.0041338 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:42:59.783+0200: 771.728: [GC (Allocation Failure) 771.728: [ParNew: 225754K->8193K(245760K), 0.0042303 secs] 403223K->185715K(791936K), 0.0042886 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:01.771+0200: 773.716: [GC (Allocation Failure) 773.716: [ParNew: 226208K->5693K(245760K), 0.0031560 secs] 403729K->183418K(791936K), 0.0032180 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:04.023+0200: 775.968: [GC (Allocation Failure) 775.968: [ParNew: 224189K->4288K(245760K), 0.0037774 secs] 401914K->182215K(791936K), 0.0038618 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:06.413+0200: 778.358: [GC (Allocation Failure) 778.358: [ParNew: 222784K->5209K(245760K), 0.0041697 secs] 400711K->183201K(791936K), 0.0042261 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:08.660+0200: 780.604: [GC (Allocation Failure) 780.604: [ParNew: 223705K->6459K(245760K), 0.0059294 secs] 401697K->184583K(791936K), 0.0060558 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:11.564+0200: 783.508: [GC (Allocation Failure) 783.508: [ParNew: 224781K->4251K(245760K), 0.0031681 secs] 402905K->182442K(791936K), 0.0032530 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:14.700+0200: 786.645: [GC (Allocation Failure) 786.645: [ParNew: 222747K->4212K(245760K), 0.0040978 secs] 400938K->182458K(791936K), 0.0041767 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:43:17.356+0200: 789.301: [GC (Allocation Failure) 789.301: [ParNew: 222708K->3534K(245760K), 0.0027160 secs] 400954K->181858K(791936K), 0.0027753 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:19.784+0200: 791.728: [GC (Allocation Failure) 791.728: [ParNew: 222030K->5538K(245760K), 0.0040293 secs] 400354K->183967K(791936K), 0.0041039 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:22.224+0200: 794.168: [GC (Allocation Failure) 794.168: [ParNew: 224034K->8810K(245760K), 0.0060777 secs] 402463K->187289K(791936K), 0.0061547 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:24.914+0200: 796.859: [GC (Allocation Failure) 796.859: [ParNew: 227306K->6883K(245760K), 0.0029446 secs] 405785K->185516K(791936K), 0.0030519 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:27.176+0200: 799.120: [GC (Allocation Failure) 799.120: [ParNew: 225379K->5976K(245760K), 0.0046493 secs] 404012K->184690K(791936K), 0.0047332 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:29.844+0200: 801.788: [GC (Allocation Failure) 801.788: [ParNew: 224472K->6112K(245760K), 0.0036421 secs] 403186K->184982K(791936K), 0.0037148 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:32.409+0200: 804.354: [GC (Allocation Failure) 804.354: [ParNew: 224608K->5346K(245760K), 0.0040344 secs] 403478K->184472K(791936K), 0.0041072 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:34.376+0200: 806.320: [GC (Allocation Failure) 806.320: [ParNew: 223842K->5838K(245760K), 0.0036747 secs] 402968K->185059K(791936K), 0.0037531 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:36.871+0200: 808.815: [GC (Allocation Failure) 808.816: [ParNew: 224334K->6481K(245760K), 0.0046236 secs] 403555K->185788K(791936K), 0.0047141 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:38.981+0200: 810.925: [GC (Allocation Failure) 810.926: [ParNew: 224977K->8474K(245760K), 0.0051022 secs] 404284K->187876K(791936K), 0.0051774 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] +2016-04-14T22:43:41.950+0200: 813.895: [GC (Allocation Failure) 813.895: [ParNew: 226970K->10217K(245760K), 0.0052366 secs] 406372K->189752K(791936K), 0.0053047 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:45.095+0200: 817.039: [GC (Allocation Failure) 817.039: [ParNew: 228713K->7498K(245760K), 0.0049231 secs] 408248K->187077K(791936K), 0.0049898 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:43:47.402+0200: 819.346: [GC (Allocation Failure) 819.346: [ParNew: 225994K->6775K(245760K), 0.0041179 secs] 405573K->186555K(791936K), 0.0042000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:49.439+0200: 821.384: [GC (Allocation Failure) 821.384: [ParNew: 225271K->4916K(245760K), 0.0034881 secs] 405051K->184778K(791936K), 0.0035632 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:51.602+0200: 823.546: [GC (Allocation Failure) 823.546: [ParNew: 223412K->4459K(245760K), 0.0032385 secs] 403274K->184451K(791936K), 0.0033038 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:43:54.376+0200: 826.320: [GC (Allocation Failure) 826.320: [ParNew: 222955K->3413K(245760K), 0.0039112 secs] 402947K->183494K(791936K), 0.0040022 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:43:56.805+0200: 828.750: [GC (Allocation Failure) 828.750: [ParNew: 221909K->6555K(245760K), 0.0052571 secs] 401990K->186983K(791936K), 0.0053308 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:43:59.390+0200: 831.335: [GC (Allocation Failure) 831.335: [ParNew: 225051K->4663K(245760K), 0.0031560 secs] 405479K->185346K(791936K), 0.0032161 secs] [Times: user=0.11 sys=0.02, real=0.00 secs] +2016-04-14T22:44:01.886+0200: 833.830: [GC (Allocation Failure) 833.830: [ParNew: 223159K->3108K(245760K), 0.0031420 secs] 403842K->183840K(791936K), 0.0032194 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:04.354+0200: 836.299: [GC (Allocation Failure) 836.299: [ParNew: 221604K->5038K(245760K), 0.0036029 secs] 402336K->185859K(791936K), 0.0036850 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:06.743+0200: 838.687: [GC (Allocation Failure) 838.687: [ParNew: 223534K->6143K(245760K), 0.0031984 secs] 404355K->187076K(791936K), 0.0032763 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:08.791+0200: 840.736: [GC (Allocation Failure) 840.736: [ParNew: 224639K->7169K(245760K), 0.0045415 secs] 405572K->188191K(791936K), 0.0046250 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:44:10.967+0200: 842.912: [GC (Allocation Failure) 842.912: [ParNew: 225665K->5028K(245760K), 0.0032175 secs] 406687K->186158K(791936K), 0.0032824 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:44:13.858+0200: 845.802: [GC (Allocation Failure) 845.802: [ParNew: 223524K->4129K(245760K), 0.0031793 secs] 404654K->185373K(791936K), 0.0032605 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:44:17.685+0200: 849.630: [GC (Allocation Failure) 849.630: [ParNew: 222625K->4118K(245760K), 0.0030799 secs] 403869K->185531K(791936K), 0.0031625 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:20.800+0200: 852.745: [GC (Allocation Failure) 852.745: [ParNew: 222614K->8639K(245760K), 0.0050607 secs] 404027K->190178K(791936K), 0.0051372 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:44:24.854+0200: 856.798: [GC (Allocation Failure) 856.798: [ParNew: 227135K->5315K(245760K), 0.0032814 secs] 408674K->186919K(791936K), 0.0033556 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:30.460+0200: 862.405: [GC (Allocation Failure) 862.405: [ParNew: 223811K->5907K(245760K), 0.0037718 secs] 405415K->187578K(791936K), 0.0038375 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:34.501+0200: 866.445: [GC (Allocation Failure) 866.445: [ParNew: 224403K->4868K(245760K), 0.0038179 secs] 406074K->186749K(791936K), 0.0038865 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:44:37.517+0200: 869.461: [GC (Allocation Failure) 869.461: [ParNew: 223364K->7130K(245760K), 0.0049684 secs] 405245K->189082K(791936K), 0.0050383 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:44:39.644+0200: 871.589: [GC (Allocation Failure) 871.589: [ParNew: 225626K->5034K(245760K), 0.0038688 secs] 407578K->187319K(791936K), 0.0039313 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:41.983+0200: 873.927: [GC (Allocation Failure) 873.927: [ParNew: 223530K->3715K(245760K), 0.0050771 secs] 405815K->186362K(791936K), 0.0051596 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:44:44.743+0200: 876.687: [GC (Allocation Failure) 876.687: [ParNew: 222211K->5909K(245760K), 0.0043414 secs] 404858K->188961K(791936K), 0.0044281 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:47.744+0200: 879.688: [GC (Allocation Failure) 879.688: [ParNew: 223839K->6681K(245760K), 0.0042565 secs] 406891K->190053K(791936K), 0.0043428 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:44:50.466+0200: 882.411: [GC (Allocation Failure) 882.411: [ParNew: 225177K->5039K(245760K), 0.0040764 secs] 408549K->188717K(791936K), 0.0041576 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:44:52.874+0200: 884.818: [GC (Allocation Failure) 884.818: [ParNew: 223535K->6380K(245760K), 0.0039066 secs] 407213K->190202K(791936K), 0.0039803 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:44:55.139+0200: 887.084: [GC (Allocation Failure) 887.084: [ParNew: 224876K->4104K(245760K), 0.0034475 secs] 408698K->188075K(791936K), 0.0035124 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:44:58.179+0200: 890.123: [GC (Allocation Failure) 890.123: [ParNew: 222600K->11768K(245760K), 0.0077618 secs] 406571K->195886K(791936K), 0.0079013 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:01.103+0200: 893.048: [GC (Allocation Failure) 893.048: [ParNew: 230264K->8339K(245760K), 0.0045923 secs] 414382K->192584K(791936K), 0.0046614 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:04.023+0200: 895.968: [GC (Allocation Failure) 895.968: [ParNew: 226743K->4181K(245760K), 0.0030370 secs] 410988K->188563K(791936K), 0.0031093 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:07.100+0200: 899.044: [GC (Allocation Failure) 899.044: [ParNew: 222677K->6159K(245760K), 0.0039332 secs] 407059K->190627K(791936K), 0.0040092 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:09.629+0200: 901.573: [GC (Allocation Failure) 901.573: [ParNew: 224655K->3950K(245760K), 0.0028886 secs] 409123K->188487K(791936K), 0.0029661 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:12.818+0200: 904.763: [GC (Allocation Failure) 904.763: [ParNew: 222446K->3738K(245760K), 0.0034181 secs] 406983K->188363K(791936K), 0.0034853 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:16.396+0200: 908.340: [GC (Allocation Failure) 908.340: [ParNew: 222234K->5226K(245760K), 0.0040279 secs] 406859K->189928K(791936K), 0.0041044 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:18.901+0200: 910.845: [GC (Allocation Failure) 910.845: [ParNew: 223722K->4313K(245760K), 0.0042565 secs] 408424K->189219K(791936K), 0.0043325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:22.071+0200: 914.015: [GC (Allocation Failure) 914.015: [ParNew: 222809K->8337K(245760K), 0.0054759 secs] 407715K->193373K(791936K), 0.0055370 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:24.341+0200: 916.285: [GC (Allocation Failure) 916.285: [ParNew: 226382K->7046K(245760K), 0.0028774 secs] 411417K->192311K(791936K), 0.0029624 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:26.739+0200: 918.683: [GC (Allocation Failure) 918.683: [ParNew: 225542K->5253K(245760K), 0.0040848 secs] 410807K->190591K(791936K), 0.0041562 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:29.557+0200: 921.501: [GC (Allocation Failure) 921.501: [ParNew: 223563K->4043K(245760K), 0.0024651 secs] 408901K->189433K(791936K), 0.0025458 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:31.989+0200: 923.933: [GC (Allocation Failure) 923.933: [ParNew: 222539K->4912K(245760K), 0.0041772 secs] 407929K->190377K(791936K), 0.0042392 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:35.263+0200: 927.208: [GC (Allocation Failure) 927.208: [ParNew: 223408K->6199K(245760K), 0.0037708 secs] 408873K->191712K(791936K), 0.0038515 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:37.598+0200: 929.542: [GC (Allocation Failure) 929.542: [ParNew: 224695K->8263K(245760K), 0.0065279 secs] 410208K->193844K(791936K), 0.0066431 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:45:39.995+0200: 931.939: [GC (Allocation Failure) 931.939: [ParNew: 226759K->5755K(245760K), 0.0033234 secs] 412340K->191386K(791936K), 0.0033850 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:42.430+0200: 934.375: [GC (Allocation Failure) 934.375: [ParNew: 224251K->5276K(245760K), 0.0038450 secs] 409882K->191228K(791936K), 0.0039215 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:44.942+0200: 936.887: [GC (Allocation Failure) 936.887: [ParNew: 223772K->3178K(245760K), 0.0032241 secs] 409724K->189271K(791936K), 0.0032889 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:47.497+0200: 939.441: [GC (Allocation Failure) 939.441: [ParNew: 221674K->4874K(245760K), 0.0032045 secs] 407767K->191083K(791936K), 0.0032735 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:50.101+0200: 942.046: [GC (Allocation Failure) 942.046: [ParNew: 223370K->5690K(245760K), 0.0039910 secs] 409579K->191973K(791936K), 0.0040545 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:45:52.754+0200: 944.698: [GC (Allocation Failure) 944.698: [ParNew: 224186K->4671K(245760K), 0.0030832 secs] 410469K->191041K(791936K), 0.0031662 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:45:52 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.2 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part4.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part4.txt new file mode 100644 index 00000000..106a5a5c --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part4.txt @@ -0,0 +1,97 @@ +2016-04-14 22:45:53 GC log file created logs/garbageCollection.log.3 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9092400k free), swap 20473812k(9802084k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:45:57.351+0200: 949.295: [GC (Allocation Failure) 949.295: [ParNew: 223167K->9863K(245760K), 0.0055865 secs] 409537K->196279K(791936K), 0.0057330 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:46:00.182+0200: 952.127: [GC (Allocation Failure) 952.127: [ParNew: 228359K->6635K(245760K), 0.0035399 secs] 414775K->193128K(791936K), 0.0036113 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:02.446+0200: 954.391: [GC (Allocation Failure) 954.391: [ParNew: 225131K->6087K(245760K), 0.0042504 secs] 411624K->192721K(791936K), 0.0043134 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:05.247+0200: 957.192: [GC (Allocation Failure) 957.192: [ParNew: 224583K->5614K(245760K), 0.0042952 secs] 411217K->192411K(791936K), 0.0043917 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:46:07.754+0200: 959.698: [GC (Allocation Failure) 959.698: [ParNew: 224110K->3802K(245760K), 0.0028117 secs] 410907K->190702K(791936K), 0.0028779 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:10.577+0200: 962.521: [GC (Allocation Failure) 962.521: [ParNew: 222298K->4908K(245760K), 0.0038469 secs] 409198K->192113K(791936K), 0.0039234 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:46:13.529+0200: 965.473: [GC (Allocation Failure) 965.474: [ParNew: 223371K->4088K(245760K), 0.0025845 secs] 410576K->191358K(791936K), 0.0026521 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:16.485+0200: 968.430: [GC (Allocation Failure) 968.430: [ParNew: 222461K->5780K(245760K), 0.0045093 secs] 409730K->193281K(791936K), 0.0045793 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:46:19.285+0200: 971.229: [GC (Allocation Failure) 971.229: [ParNew: 224276K->7415K(245760K), 0.0056079 secs] 411777K->194989K(791936K), 0.0056742 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:46:22.210+0200: 974.154: [GC (Allocation Failure) 974.154: [ParNew: 225911K->5450K(245760K), 0.0042924 secs] 413485K->193100K(791936K), 0.0043666 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:25.260+0200: 977.204: [GC (Allocation Failure) 977.204: [ParNew: 223946K->4279K(245760K), 0.0036416 secs] 411596K->191994K(791936K), 0.0037204 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:28.493+0200: 980.438: [GC (Allocation Failure) 980.467: [ParNew: 222775K->3827K(245760K), 0.0033906 secs] 410490K->191736K(791936K), 0.0326297 secs] [Times: user=0.00 sys=0.00, real=0.03 secs] +2016-04-14T22:46:30.733+0200: 982.678: [GC (Allocation Failure) 982.678: [ParNew: 222323K->6304K(245760K), 0.0048974 secs] 410232K->194299K(791936K), 0.0049754 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:46:32.932+0200: 984.876: [GC (Allocation Failure) 984.876: [ParNew: 224800K->4477K(245760K), 0.0029698 secs] 412795K->192534K(791936K), 0.0030454 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:35.114+0200: 987.058: [GC (Allocation Failure) 987.058: [ParNew: 222973K->3682K(245760K), 0.0031401 secs] 411030K->191822K(791936K), 0.0032507 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:37.732+0200: 989.677: [GC (Allocation Failure) 989.677: [ParNew: 222163K->4195K(245760K), 0.0031429 secs] 410303K->192510K(791936K), 0.0032245 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:40.563+0200: 992.507: [GC (Allocation Failure) 992.507: [ParNew: 222691K->9642K(245760K), 0.0065256 secs] 411006K->198018K(791936K), 0.0066095 secs] [Times: user=0.09 sys=0.02, real=0.01 secs] +2016-04-14T22:46:43.544+0200: 995.489: [GC (Allocation Failure) 995.489: [ParNew: 228138K->8665K(245760K), 0.0047192 secs] 416514K->197089K(791936K), 0.0047920 secs] [Times: user=0.03 sys=0.02, real=0.01 secs] +2016-04-14T22:46:45.944+0200: 997.888: [GC (Allocation Failure) 997.888: [ParNew: 227161K->7179K(245760K), 0.0047136 secs] 415585K->195652K(791936K), 0.0047846 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:47.979+0200: 999.923: [GC (Allocation Failure) 999.923: [ParNew: 225675K->5065K(245760K), 0.0039523 secs] 414148K->193582K(791936K), 0.0040204 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:50.307+0200: 1002.251: [GC (Allocation Failure) 1002.251: [ParNew: 223412K->3506K(245760K), 0.0028527 secs] 411930K->192774K(791936K), 0.0029232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:52.887+0200: 1004.831: [GC (Allocation Failure) 1004.831: [ParNew: 222002K->4585K(245760K), 0.0042914 secs] 411270K->193994K(791936K), 0.0043558 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:46:55.423+0200: 1007.367: [GC (Allocation Failure) 1007.367: [ParNew: 223081K->5861K(245760K), 0.0042275 secs] 412490K->195399K(791936K), 0.0043199 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:46:59.119+0200: 1011.063: [GC (Allocation Failure) 1011.063: [ParNew: 224357K->6525K(245760K), 0.0037120 secs] 413895K->196197K(791936K), 0.0037969 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:01.785+0200: 1013.730: [GC (Allocation Failure) 1013.730: [ParNew: 225021K->4595K(245760K), 0.0041310 secs] 414693K->194370K(791936K), 0.0041995 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:04.574+0200: 1016.519: [GC (Allocation Failure) 1016.519: [ParNew: 223091K->5601K(245760K), 0.0032987 secs] 412866K->195433K(791936K), 0.0033598 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:07.539+0200: 1019.483: [GC (Allocation Failure) 1019.483: [ParNew: 224097K->6167K(245760K), 0.0039182 secs] 413929K->196060K(791936K), 0.0040003 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:10.629+0200: 1022.573: [GC (Allocation Failure) 1022.573: [ParNew: 224072K->4549K(245760K), 0.0029134 secs] 413964K->194564K(791936K), 0.0029712 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:13.821+0200: 1025.766: [GC (Allocation Failure) 1025.766: [ParNew: 223045K->4566K(245760K), 0.0040176 secs] 413060K->194864K(791936K), 0.0040997 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:16.441+0200: 1028.385: [GC (Allocation Failure) 1028.385: [ParNew: 223062K->6771K(245760K), 0.0046577 secs] 413360K->197168K(791936K), 0.0047253 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:19.164+0200: 1031.109: [GC (Allocation Failure) 1031.109: [ParNew: 224923K->5683K(245760K), 0.0024879 secs] 415320K->196138K(791936K), 0.0025593 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:21.362+0200: 1033.306: [GC (Allocation Failure) 1033.307: [ParNew: 224179K->4797K(245760K), 0.0041963 secs] 414634K->195294K(791936K), 0.0042826 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:23.967+0200: 1035.912: [GC (Allocation Failure) 1035.912: [ParNew: 223166K->4291K(245760K), 0.0030743 secs] 413663K->194876K(791936K), 0.0031373 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:47:26.911+0200: 1038.855: [GC (Allocation Failure) 1038.855: [ParNew: 222787K->5187K(245760K), 0.0038175 secs] 413372K->195855K(791936K), 0.0039005 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:30.488+0200: 1042.432: [GC (Allocation Failure) 1042.432: [ParNew: 223232K->7435K(245760K), 0.0043577 secs] 413900K->198155K(791936K), 0.0044337 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:33.163+0200: 1045.108: [GC (Allocation Failure) 1045.108: [ParNew: 225931K->5316K(245760K), 0.0039859 secs] 416651K->196099K(791936K), 0.0040624 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:36.585+0200: 1048.530: [GC (Allocation Failure) 1048.530: [ParNew: 223812K->5654K(245760K), 0.0047626 secs] 414595K->196644K(791936K), 0.0048410 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:39.270+0200: 1051.214: [GC (Allocation Failure) 1051.214: [ParNew: 224150K->3883K(245760K), 0.0036575 secs] 415140K->195036K(791936K), 0.0037284 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:41.503+0200: 1053.447: [GC (Allocation Failure) 1053.447: [ParNew: 222379K->4674K(245760K), 0.0050337 secs] 413532K->195871K(791936K), 0.0051060 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:44.635+0200: 1056.579: [GC (Allocation Failure) 1056.579: [ParNew: 223170K->10022K(245760K), 0.0060917 secs] 414367K->201275K(791936K), 0.0061612 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:47.930+0200: 1059.875: [GC (Allocation Failure) 1059.875: [ParNew: 228518K->9231K(245760K), 0.0056126 secs] 419771K->200577K(791936K), 0.0056877 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:50.276+0200: 1062.221: [GC (Allocation Failure) 1062.221: [ParNew: 227727K->8642K(245760K), 0.0054302 secs] 419073K->200138K(791936K), 0.0055132 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:52.838+0200: 1064.782: [GC (Allocation Failure) 1064.782: [ParNew: 227138K->10415K(245760K), 0.0063072 secs] 418634K->202066K(791936K), 0.0063772 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:47:55.285+0200: 1067.229: [GC (Allocation Failure) 1067.229: [ParNew: 228911K->6364K(245760K), 0.0038021 secs] 420562K->198128K(791936K), 0.0038739 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:47:58.168+0200: 1070.112: [GC (Allocation Failure) 1070.112: [ParNew: 224857K->4031K(245760K), 0.0027408 secs] 416622K->195956K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:00.908+0200: 1072.852: [GC (Allocation Failure) 1072.852: [ParNew: 222527K->5648K(245760K), 0.0049035 secs] 414452K->197722K(791936K), 0.0049772 secs] [Times: user=0.09 sys=0.00, real=0.01 secs] +2016-04-14T22:48:04.270+0200: 1076.215: [GC (Allocation Failure) 1076.215: [ParNew: 224144K->5333K(245760K), 0.0042719 secs] 416218K->197490K(791936K), 0.0043362 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:06.611+0200: 1078.556: [GC (Allocation Failure) 1078.556: [ParNew: 223829K->3697K(245760K), 0.0028210 secs] 415986K->196014K(791936K), 0.0028886 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:09.285+0200: 1081.229: [GC (Allocation Failure) 1081.229: [ParNew: 222193K->5466K(245760K), 0.0040078 secs] 414510K->197848K(791936K), 0.0040848 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:11.734+0200: 1083.679: [GC (Allocation Failure) 1083.679: [ParNew: 223962K->3726K(245760K), 0.0030664 secs] 416344K->196162K(791936K), 0.0031424 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:14.993+0200: 1086.938: [GC (Allocation Failure) 1086.938: [ParNew: 222222K->3106K(245760K), 0.0030883 secs] 414658K->195585K(791936K), 0.0031942 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:17.800+0200: 1089.744: [GC (Allocation Failure) 1089.744: [ParNew: 221602K->3147K(245760K), 0.0031723 secs] 414081K->195833K(791936K), 0.0032362 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:20.281+0200: 1092.226: [GC (Allocation Failure) 1092.226: [ParNew: 221643K->5400K(245760K), 0.0037704 secs] 414329K->198193K(791936K), 0.0038431 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:23.007+0200: 1094.952: [GC (Allocation Failure) 1094.952: [ParNew: 223896K->4172K(245760K), 0.0028065 secs] 416689K->197136K(791936K), 0.0028798 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:25.745+0200: 1097.690: [GC (Allocation Failure) 1097.690: [ParNew: 222668K->4928K(245760K), 0.0048606 secs] 415632K->197955K(791936K), 0.0049222 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:48:27.591+0200: 1099.535: [GC (Allocation Failure) 1099.535: [ParNew: 222950K->6591K(245760K), 0.0038949 secs] 415977K->199675K(791936K), 0.0039682 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:30.231+0200: 1102.175: [GC (Allocation Failure) 1102.175: [ParNew: 225087K->4210K(245760K), 0.0036631 secs] 418171K->197345K(791936K), 0.0037634 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:32.740+0200: 1104.685: [GC (Allocation Failure) 1104.685: [ParNew: 222706K->4012K(245760K), 0.0030249 secs] 415841K->197203K(791936K), 0.0030990 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:35.166+0200: 1107.111: [GC (Allocation Failure) 1107.111: [ParNew: 222508K->3307K(245760K), 0.0029880 secs] 415699K->196613K(791936K), 0.0030547 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:38.219+0200: 1110.163: [GC (Allocation Failure) 1110.163: [ParNew: 221803K->4944K(245760K), 0.0040227 secs] 415109K->198379K(791936K), 0.0040927 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:41.106+0200: 1113.050: [GC (Allocation Failure) 1113.050: [ParNew: 223440K->4584K(245760K), 0.0036164 secs] 416875K->198094K(791936K), 0.0036957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:43.820+0200: 1115.765: [GC (Allocation Failure) 1115.765: [ParNew: 223080K->6232K(245760K), 0.0035954 secs] 416590K->199849K(791936K), 0.0036808 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:46.863+0200: 1118.807: [GC (Allocation Failure) 1118.807: [ParNew: 224728K->4862K(245760K), 0.0037787 secs] 418345K->199213K(791936K), 0.0038823 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:48:48.974+0200: 1120.918: [GC (Allocation Failure) 1120.918: [ParNew: 223358K->4402K(245760K), 0.0043577 secs] 417709K->198815K(791936K), 0.0044370 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:48:51.406+0200: 1123.350: [GC (Allocation Failure) 1123.351: [ParNew: 222898K->6136K(245760K), 0.0050257 secs] 417311K->200592K(791936K), 0.0051060 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:48:54.548+0200: 1126.492: [GC (Allocation Failure) 1126.492: [ParNew: 224632K->4567K(245760K), 0.0029507 secs] 419088K->199092K(791936K), 0.0030267 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:48:57.753+0200: 1129.698: [GC (Allocation Failure) 1129.698: [ParNew: 223063K->7059K(245760K), 0.0041893 secs] 417588K->201640K(791936K), 0.0042607 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:00.878+0200: 1132.823: [GC (Allocation Failure) 1132.823: [ParNew: 225555K->7043K(245760K), 0.0045532 secs] 420136K->201904K(791936K), 0.0046297 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:03.302+0200: 1135.246: [GC (Allocation Failure) 1135.246: [ParNew: 225539K->4566K(245760K), 0.0042891 secs] 420400K->199848K(791936K), 0.0043586 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:06.156+0200: 1138.101: [GC (Allocation Failure) 1138.101: [ParNew: 223062K->4776K(245760K), 0.0045424 secs] 418344K->200300K(791936K), 0.0046040 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:49:08.781+0200: 1140.726: [GC (Allocation Failure) 1140.726: [ParNew: 223272K->3930K(245760K), 0.0032031 secs] 418796K->199622K(791936K), 0.0032833 secs] [Times: user=0.11 sys=0.02, real=0.00 secs] +2016-04-14T22:49:11.404+0200: 1143.349: [GC (Allocation Failure) 1143.349: [ParNew: 222122K->3517K(245760K), 0.0027944 secs] 417813K->199314K(791936K), 0.0028537 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:14.104+0200: 1146.049: [GC (Allocation Failure) 1146.049: [ParNew: 222013K->3951K(245760K), 0.0038245 secs] 417810K->199848K(791936K), 0.0039532 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:17.655+0200: 1149.600: [GC (Allocation Failure) 1149.600: [ParNew: 222447K->7211K(245760K), 0.0050803 secs] 418344K->203169K(791936K), 0.0051615 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:49:20.296+0200: 1152.241: [GC (Allocation Failure) 1152.241: [ParNew: 225707K->6056K(245760K), 0.0040307 secs] 421665K->202087K(791936K), 0.0041072 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:49:22.642+0200: 1154.586: [GC (Allocation Failure) 1154.586: [ParNew: 223985K->4771K(245760K), 0.0043861 secs] 420016K->200893K(791936K), 0.0044487 secs] [Times: user=0.08 sys=0.00, real=0.00 secs] +2016-04-14T22:49:25.318+0200: 1157.262: [GC (Allocation Failure) 1157.263: [ParNew: 223267K->6112K(245760K), 0.0045452 secs] 419389K->202339K(791936K), 0.0046129 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:27.927+0200: 1159.871: [GC (Allocation Failure) 1159.871: [ParNew: 224608K->4529K(245760K), 0.0027044 secs] 420835K->200809K(791936K), 0.0027715 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:31.037+0200: 1162.981: [GC (Allocation Failure) 1162.981: [ParNew: 223025K->2468K(245760K), 0.0026073 secs] 419305K->198818K(791936K), 0.0026661 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:33.253+0200: 1165.198: [GC (Allocation Failure) 1165.198: [ParNew: 220964K->5342K(245760K), 0.0037932 secs] 417314K->201787K(791936K), 0.0038702 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:36.908+0200: 1168.853: [GC (Allocation Failure) 1168.853: [ParNew: 223838K->7274K(245760K), 0.0038063 secs] 420283K->203865K(791936K), 0.0038753 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:39.652+0200: 1171.596: [GC (Allocation Failure) 1171.596: [ParNew: 225770K->5725K(245760K), 0.0041030 secs] 422361K->202460K(791936K), 0.0041650 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:43.185+0200: 1175.129: [GC (Allocation Failure) 1175.130: [ParNew: 224221K->4598K(245760K), 0.0039322 secs] 420956K->201388K(791936K), 0.0040153 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:49:46.569+0200: 1178.514: [GC (Allocation Failure) 1178.514: [ParNew: 223094K->5619K(245760K), 0.0033575 secs] 419884K->202461K(791936K), 0.0034247 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:49.977+0200: 1181.921: [GC (Allocation Failure) 1181.921: [ParNew: 224115K->6557K(245760K), 0.0040507 secs] 420957K->203534K(791936K), 0.0041342 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:53.502+0200: 1185.446: [GC (Allocation Failure) 1185.446: [ParNew: 225053K->5629K(245760K), 0.0039248 secs] 422030K->202993K(791936K), 0.0039859 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:49:57.445+0200: 1189.389: [GC (Allocation Failure) 1189.389: [ParNew: 224125K->8641K(245760K), 0.0062993 secs] 421489K->206281K(791936K), 0.0063814 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:00.398+0200: 1192.343: [GC (Allocation Failure) 1192.343: [ParNew: 227137K->11567K(245760K), 0.0074754 secs] 424777K->209487K(791936K), 0.0075668 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:03.410+0200: 1195.355: [GC (Allocation Failure) 1195.355: [ParNew: 230063K->7195K(245760K), 0.0060745 secs] 427983K->205532K(791936K), 0.0061374 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:06.261+0200: 1198.206: [GC (Allocation Failure) 1198.206: [ParNew: 225691K->7262K(245760K), 0.0045732 secs] 424028K->205971K(791936K), 0.0046539 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:10.312+0200: 1202.256: [GC (Allocation Failure) 1202.256: [ParNew: 225758K->8849K(245760K), 0.0048932 secs] 424467K->207916K(791936K), 0.0049572 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:50:13.086+0200: 1205.030: [GC (Allocation Failure) 1205.031: [ParNew: 227345K->6302K(245760K), 0.0038399 secs] 426412K->205795K(791936K), 0.0039131 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:50:13 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.3 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part5.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part5.txt new file mode 100644 index 00000000..4e72d2f6 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part5.txt @@ -0,0 +1,97 @@ +2016-04-14 22:50:13 GC log file created logs/garbageCollection.log.4 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9070724k free), swap 20473812k(9819300k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:50:15.874+0200: 1207.818: [GC (Allocation Failure) 1207.818: [ParNew: 224798K->4278K(245760K), 0.0040722 secs] 424291K->204126K(791936K), 0.0042359 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:50:18.946+0200: 1210.890: [GC (Allocation Failure) 1210.890: [ParNew: 222774K->9990K(245760K), 0.0056373 secs] 422622K->210023K(791936K), 0.0057115 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:22.592+0200: 1214.536: [GC (Allocation Failure) 1214.536: [ParNew: 228486K->6385K(245760K), 0.0028830 secs] 428519K->206501K(791936K), 0.0029540 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:26.270+0200: 1218.215: [GC (Allocation Failure) 1218.215: [ParNew: 224881K->4340K(245760K), 0.0031998 secs] 424997K->204578K(791936K), 0.0032796 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:29.217+0200: 1221.162: [GC (Allocation Failure) 1221.162: [ParNew: 222836K->4321K(245760K), 0.0037172 secs] 423074K->204652K(791936K), 0.0037951 secs] [Times: user=0.03 sys=0.00, real=0.00 secs] +2016-04-14T22:50:32.066+0200: 1224.010: [GC (Allocation Failure) 1224.010: [ParNew: 222817K->5882K(245760K), 0.0050388 secs] 423148K->206263K(791936K), 0.0051372 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:34.986+0200: 1226.931: [GC (Allocation Failure) 1226.931: [ParNew: 224378K->7186K(245760K), 0.0038926 secs] 424759K->207624K(791936K), 0.0039686 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:37.674+0200: 1229.618: [GC (Allocation Failure) 1229.618: [ParNew: 225682K->6439K(245760K), 0.0052753 secs] 426120K->206965K(791936K), 0.0053542 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:40.740+0200: 1232.685: [GC (Allocation Failure) 1232.685: [ParNew: 224935K->6161K(245760K), 0.0036383 secs] 425461K->206949K(791936K), 0.0037158 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:43.566+0200: 1235.511: [GC (Allocation Failure) 1235.511: [ParNew: 224657K->6520K(245760K), 0.0042984 secs] 425445K->207686K(791936K), 0.0043708 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:46.271+0200: 1238.215: [GC (Allocation Failure) 1238.215: [ParNew: 225016K->7527K(245760K), 0.0044314 secs] 426182K->208841K(791936K), 0.0045028 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:50:48.657+0200: 1240.601: [GC (Allocation Failure) 1240.601: [ParNew: 226023K->5114K(245760K), 0.0030473 secs] 427337K->206577K(791936K), 0.0031126 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:50:51.365+0200: 1243.310: [GC (Allocation Failure) 1243.310: [ParNew: 223610K->6098K(245760K), 0.0044641 secs] 425073K->207695K(791936K), 0.0045256 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:53.977+0200: 1245.922: [GC (Allocation Failure) 1245.922: [ParNew: 224594K->6167K(245760K), 0.0035138 secs] 426191K->208015K(791936K), 0.0035903 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:56.512+0200: 1248.457: [GC (Allocation Failure) 1248.457: [ParNew: 224663K->3958K(245760K), 0.0034111 secs] 426511K->205954K(791936K), 0.0035618 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:50:59.738+0200: 1251.682: [GC (Allocation Failure) 1251.682: [ParNew: 222454K->3822K(245760K), 0.0033626 secs] 424450K->205925K(791936K), 0.0034396 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:02.334+0200: 1254.278: [GC (Allocation Failure) 1254.278: [ParNew: 222318K->4415K(245760K), 0.0038086 secs] 424421K->206608K(791936K), 0.0038744 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:04.862+0200: 1256.806: [GC (Allocation Failure) 1256.806: [ParNew: 222911K->4122K(245760K), 0.0030407 secs] 425104K->206379K(791936K), 0.0031154 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:07.232+0200: 1259.177: [GC (Allocation Failure) 1259.177: [ParNew: 222618K->7013K(245760K), 0.0046847 secs] 424875K->209466K(791936K), 0.0047463 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:09.597+0200: 1261.541: [GC (Allocation Failure) 1261.541: [ParNew: 225509K->5535K(245760K), 0.0041627 secs] 427962K->208085K(791936K), 0.0042471 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:12.703+0200: 1264.648: [GC (Allocation Failure) 1264.648: [ParNew: 224031K->8874K(245760K), 0.0052716 secs] 426581K->211491K(791936K), 0.0053486 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:51:16.155+0200: 1268.100: [GC (Allocation Failure) 1268.100: [ParNew: 227370K->11716K(245760K), 0.0062307 secs] 429987K->214466K(791936K), 0.0062947 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:51:18.497+0200: 1270.442: [GC (Allocation Failure) 1270.442: [ParNew: 230212K->8051K(245760K), 0.0037620 secs] 432962K->210954K(791936K), 0.0038417 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:21.122+0200: 1273.066: [GC (Allocation Failure) 1273.066: [ParNew: 226547K->8201K(245760K), 0.0058015 secs] 429450K->211173K(791936K), 0.0058734 secs] [Times: user=0.09 sys=0.00, real=0.01 secs] +2016-04-14T22:51:23.636+0200: 1275.580: [GC (Allocation Failure) 1275.580: [ParNew: 226697K->5873K(245760K), 0.0026031 secs] 429669K->208903K(791936K), 0.0026773 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:26.610+0200: 1278.554: [GC (Allocation Failure) 1278.554: [ParNew: 224369K->5009K(245760K), 0.0038207 secs] 427399K->208176K(791936K), 0.0038968 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:29.101+0200: 1281.045: [GC (Allocation Failure) 1281.045: [ParNew: 223505K->5103K(245760K), 0.0038361 secs] 426672K->208442K(791936K), 0.0039136 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:31.573+0200: 1283.518: [GC (Allocation Failure) 1283.518: [ParNew: 223599K->5894K(245760K), 0.0042033 secs] 426938K->209431K(791936K), 0.0042798 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:34.514+0200: 1286.458: [GC (Allocation Failure) 1286.458: [ParNew: 224390K->4310K(245760K), 0.0029507 secs] 427927K->207980K(791936K), 0.0030230 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:37.290+0200: 1289.235: [GC (Allocation Failure) 1289.235: [ParNew: 222806K->3469K(245760K), 0.0027422 secs] 426476K->207231K(791936K), 0.0028098 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:39.468+0200: 1291.413: [GC (Allocation Failure) 1291.413: [ParNew: 221965K->5245K(245760K), 0.0038543 secs] 425727K->209144K(791936K), 0.0039299 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:51:42.081+0200: 1294.026: [GC (Allocation Failure) 1294.026: [ParNew: 223741K->4473K(245760K), 0.0030669 secs] 427640K->208517K(791936K), 0.0031448 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:45.816+0200: 1297.761: [GC (Allocation Failure) 1297.761: [ParNew: 222969K->7958K(245760K), 0.0054447 secs] 427013K->212060K(791936K), 0.0055128 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:51:48.407+0200: 1300.352: [GC (Allocation Failure) 1300.352: [ParNew: 226255K->7752K(245760K), 0.0045219 secs] 430358K->211939K(791936K), 0.0046035 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:51:51.480+0200: 1303.424: [GC (Allocation Failure) 1303.424: [ParNew: 226248K->5895K(245760K), 0.0039327 secs] 430435K->210158K(791936K), 0.0040199 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:54.083+0200: 1306.027: [GC (Allocation Failure) 1306.027: [ParNew: 224391K->3686K(245760K), 0.0040699 secs] 428654K->208125K(791936K), 0.0041422 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:56.198+0200: 1308.143: [GC (Allocation Failure) 1308.143: [ParNew: 222182K->2525K(245760K), 0.0027608 secs] 426621K->207039K(791936K), 0.0028411 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:51:59.283+0200: 1311.228: [GC (Allocation Failure) 1311.228: [ParNew: 221021K->4571K(245760K), 0.0040787 secs] 425535K->209133K(791936K), 0.0041678 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:52:02.058+0200: 1314.002: [GC (Allocation Failure) 1314.002: [ParNew: 223062K->6277K(245760K), 0.0035343 secs] 427623K->210949K(791936K), 0.0036197 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:05.093+0200: 1317.037: [GC (Allocation Failure) 1317.037: [ParNew: 224773K->5154K(245760K), 0.0032395 secs] 429445K->209910K(791936K), 0.0033127 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:52:08.439+0200: 1320.383: [GC (Allocation Failure) 1320.383: [ParNew: 223650K->6164K(245760K), 0.0043400 secs] 428406K->211081K(791936K), 0.0044095 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:52:11.386+0200: 1323.330: [GC (Allocation Failure) 1323.330: [ParNew: 224660K->5526K(245760K), 0.0036206 secs] 429577K->210512K(791936K), 0.0036994 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:13.838+0200: 1325.783: [GC (Allocation Failure) 1325.783: [ParNew: 224022K->3613K(245760K), 0.0029339 secs] 429008K->208636K(791936K), 0.0030067 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:16.979+0200: 1328.923: [GC (Allocation Failure) 1328.923: [ParNew: 222109K->5505K(245760K), 0.0039117 secs] 427132K->210601K(791936K), 0.0039766 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:19.607+0200: 1331.551: [GC (Allocation Failure) 1331.551: [ParNew: 224001K->6094K(245760K), 0.0041398 secs] 429097K->211400K(791936K), 0.0042033 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:52:22.708+0200: 1334.653: [GC (Allocation Failure) 1334.653: [ParNew: 224590K->4518K(245760K), 0.0031298 secs] 429896K->209893K(791936K), 0.0031928 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:26.324+0200: 1338.268: [GC (Allocation Failure) 1338.268: [ParNew: 223014K->3801K(245760K), 0.0030244 secs] 428389K->209328K(791936K), 0.0030939 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:28.868+0200: 1340.812: [GC (Allocation Failure) 1340.812: [ParNew: 222297K->7386K(245760K), 0.0053761 secs] 427824K->212975K(791936K), 0.0054484 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:31.872+0200: 1343.816: [GC (Allocation Failure) 1343.816: [ParNew: 225882K->5195K(245760K), 0.0030967 secs] 431471K->211069K(791936K), 0.0031630 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:34.260+0200: 1346.205: [GC (Allocation Failure) 1346.205: [ParNew: 223632K->3131K(245760K), 0.0028420 secs] 429506K->209284K(791936K), 0.0029106 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:36.459+0200: 1348.404: [GC (Allocation Failure) 1348.404: [ParNew: 221627K->2480K(245760K), 0.0025504 secs] 427780K->208720K(791936K), 0.0026106 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:39.315+0200: 1351.260: [GC (Allocation Failure) 1351.260: [ParNew: 220976K->4366K(245760K), 0.0038315 secs] 427216K->210827K(791936K), 0.0039140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:42.177+0200: 1354.122: [GC (Allocation Failure) 1354.122: [ParNew: 222862K->5141K(245760K), 0.0039882 secs] 429323K->211696K(791936K), 0.0040685 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:44.104+0200: 1356.048: [GC (Allocation Failure) 1356.048: [ParNew: 223637K->3506K(245760K), 0.0030286 secs] 430192K->210170K(791936K), 0.0031060 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:46.576+0200: 1358.520: [GC (Allocation Failure) 1358.520: [ParNew: 220908K->4853K(245760K), 0.0027781 secs] 427573K->211566K(791936K), 0.0028579 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:48.456+0200: 1360.401: [GC (Allocation Failure) 1360.401: [ParNew: 223349K->5587K(245760K), 0.0036556 secs] 430062K->212348K(791936K), 0.0037200 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:51.210+0200: 1363.154: [GC (Allocation Failure) 1363.154: [ParNew: 224083K->4697K(245760K), 0.0038543 secs] 430844K->211572K(791936K), 0.0039168 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:53.742+0200: 1365.686: [GC (Allocation Failure) 1365.686: [ParNew: 223193K->6108K(245760K), 0.0035432 secs] 430068K->213061K(791936K), 0.0036033 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:52:56.437+0200: 1368.381: [GC (Allocation Failure) 1368.381: [ParNew: 224604K->3838K(245760K), 0.0036257 secs] 431557K->210864K(791936K), 0.0037130 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:52:59.622+0200: 1371.566: [GC (Allocation Failure) 1371.566: [ParNew: 221994K->4102K(245760K), 0.0033412 secs] 429019K->211240K(791936K), 0.0034018 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:01.768+0200: 1373.712: [GC (Allocation Failure) 1373.712: [ParNew: 222598K->3385K(245760K), 0.0034265 secs] 429736K->210594K(791936K), 0.0034932 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:04.151+0200: 1376.096: [GC (Allocation Failure) 1376.096: [ParNew: 221881K->4607K(245760K), 0.0033220 secs] 429090K->211860K(791936K), 0.0033831 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:06.897+0200: 1378.842: [GC (Allocation Failure) 1378.842: [ParNew: 223103K->6450K(245760K), 0.0042345 secs] 430356K->213755K(791936K), 0.0043138 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:10.066+0200: 1382.010: [GC (Allocation Failure) 1382.010: [ParNew: 224946K->8367K(245760K), 0.0044188 secs] 432251K->215762K(791936K), 0.0044939 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:13.321+0200: 1385.266: [GC (Allocation Failure) 1385.266: [ParNew: 226863K->5211K(245760K), 0.0031331 secs] 434258K->212825K(791936K), 0.0032012 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:16.533+0200: 1388.478: [GC (Allocation Failure) 1388.478: [ParNew: 223707K->2877K(245760K), 0.0032371 secs] 431321K->210561K(791936K), 0.0033085 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:19.142+0200: 1391.086: [GC (Allocation Failure) 1391.086: [ParNew: 221373K->4465K(245760K), 0.0032441 secs] 429057K->212235K(791936K), 0.0033244 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:53:21.966+0200: 1393.911: [GC (Allocation Failure) 1393.911: [ParNew: 222961K->2904K(245760K), 0.0030309 secs] 430731K->211160K(791936K), 0.0030990 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:53:25.256+0200: 1397.200: [GC (Allocation Failure) 1397.200: [ParNew: 221400K->2706K(245760K), 0.0024758 secs] 429656K->211016K(791936K), 0.0025462 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:28.558+0200: 1400.503: [GC (Allocation Failure) 1400.503: [ParNew: 221202K->3247K(245760K), 0.0029446 secs] 429512K->211631K(791936K), 0.0030230 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:32.058+0200: 1404.002: [GC (Allocation Failure) 1404.002: [ParNew: 221743K->2628K(245760K), 0.0026129 secs] 430127K->211105K(791936K), 0.0026810 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:35.056+0200: 1407.001: [GC (Allocation Failure) 1407.001: [ParNew: 221124K->5188K(245760K), 0.0039602 secs] 429601K->213693K(791936K), 0.0040241 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:37.817+0200: 1409.761: [GC (Allocation Failure) 1409.761: [ParNew: 223684K->3835K(245760K), 0.0025364 secs] 432189K->212371K(791936K), 0.0026078 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:41.313+0200: 1413.258: [GC (Allocation Failure) 1413.258: [ParNew: 222331K->5773K(245760K), 0.0044202 secs] 430867K->214408K(791936K), 0.0044967 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:53:44.357+0200: 1416.301: [GC (Allocation Failure) 1416.301: [ParNew: 224269K->4737K(245760K), 0.0029899 secs] 432904K->213414K(791936K), 0.0030575 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:47.711+0200: 1419.655: [GC (Allocation Failure) 1419.655: [ParNew: 223233K->3627K(245760K), 0.0032954 secs] 431910K->212346K(791936K), 0.0033668 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:50.586+0200: 1422.531: [GC (Allocation Failure) 1422.531: [ParNew: 222123K->4407K(245760K), 0.0038002 secs] 430842K->213164K(791936K), 0.0039290 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:53.371+0200: 1425.315: [GC (Allocation Failure) 1425.316: [ParNew: 222903K->3350K(245760K), 0.0029773 secs] 431660K->212230K(791936K), 0.0030384 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:56.314+0200: 1428.259: [GC (Allocation Failure) 1428.259: [ParNew: 221846K->4411K(245760K), 0.0034671 secs] 430726K->213333K(791936K), 0.0035450 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:53:59.010+0200: 1430.954: [GC (Allocation Failure) 1430.954: [ParNew: 222907K->12925K(245760K), 0.0078948 secs] 431829K->221899K(791936K), 0.0079601 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] +2016-04-14T22:54:02.635+0200: 1434.579: [GC (Allocation Failure) 1434.579: [ParNew: 231421K->8745K(245760K), 0.0034489 secs] 440395K->217882K(791936K), 0.0035203 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:06.066+0200: 1438.011: [GC (Allocation Failure) 1438.011: [ParNew: 227241K->3778K(245760K), 0.0033710 secs] 436378K->212962K(791936K), 0.0034331 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:08.853+0200: 1440.798: [GC (Allocation Failure) 1440.798: [ParNew: 222274K->3347K(245760K), 0.0027123 secs] 431458K->212576K(791936K), 0.0027729 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:12.325+0200: 1444.270: [GC (Allocation Failure) 1444.270: [ParNew: 221843K->5754K(245760K), 0.0044734 secs] 431072K->215095K(791936K), 0.0045457 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:54:15.138+0200: 1447.082: [GC (Allocation Failure) 1447.082: [ParNew: 224250K->3865K(245760K), 0.0027114 secs] 433591K->213291K(791936K), 0.0027809 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:18.153+0200: 1450.097: [GC (Allocation Failure) 1450.097: [ParNew: 222205K->3073K(245760K), 0.0024240 secs] 431631K->212578K(791936K), 0.0025000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:21.533+0200: 1453.478: [GC (Allocation Failure) 1453.478: [ParNew: 221569K->2970K(245760K), 0.0029843 secs] 431074K->212558K(791936K), 0.0030519 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:24.665+0200: 1456.609: [GC (Allocation Failure) 1456.609: [ParNew: 221466K->2751K(245760K), 0.0029022 secs] 431054K->212503K(791936K), 0.0029843 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:27.681+0200: 1459.626: [GC (Allocation Failure) 1459.626: [ParNew: 221247K->3832K(245760K), 0.0030137 secs] 430999K->213641K(791936K), 0.0030930 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:30.360+0200: 1462.305: [GC (Allocation Failure) 1462.305: [ParNew: 222328K->3079K(245760K), 0.0027412 secs] 432137K->212944K(791936K), 0.0028079 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:54:33.892+0200: 1465.837: [GC (Allocation Failure) 1465.837: [ParNew: 221575K->2988K(245760K), 0.0032101 secs] 431440K->212987K(791936K), 0.0032796 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:54:37.139+0200: 1469.084: [GC (Allocation Failure) 1469.084: [ParNew: 221484K->2943K(245760K), 0.0028149 secs] 431483K->213038K(791936K), 0.0028854 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14 22:54:39 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.4 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part6.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part6.txt new file mode 100644 index 00000000..4f14ce33 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part6.txt @@ -0,0 +1,102 @@ +2016-04-14 22:54:39 GC log file created logs/garbageCollection.log.5 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9066584k free), swap 20473812k(9786080k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC +2016-04-14T22:54:39.921+0200: 1471.865: [GC (Allocation Failure) 1471.866: [ParNew: 221439K->3015K(245760K), 0.0033775 secs] 431534K->213164K(791936K), 0.0035665 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:54:43.153+0200: 1475.097: [GC (Allocation Failure) 1475.097: [ParNew: 221511K->2809K(245760K), 0.0024571 secs] 431660K->212978K(791936K), 0.0025215 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:46.151+0200: 1478.096: [GC (Allocation Failure) 1478.096: [ParNew: 221305K->4832K(245760K), 0.0042793 secs] 431474K->215040K(791936K), 0.0043512 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:49.009+0200: 1480.954: [GC (Allocation Failure) 1480.954: [ParNew: 223328K->3277K(245760K), 0.0028877 secs] 433536K->213590K(791936K), 0.0029549 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:54:53.219+0200: 1485.164: [GC (Allocation Failure) 1485.164: [ParNew: 221773K->3478K(245760K), 0.0042751 secs] 432086K->213818K(791936K), 0.0043717 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:54:57.218+0200: 1489.162: [GC (Allocation Failure) 1489.162: [ParNew: 221974K->3413K(245760K), 0.0027823 secs] 432314K->213838K(791936K), 0.0028686 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:00.086+0200: 1492.030: [GC (Allocation Failure) 1492.030: [ParNew: 221909K->6284K(245760K), 0.0043213 secs] 432334K->216831K(791936K), 0.0044043 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:03.431+0200: 1495.375: [GC (Allocation Failure) 1495.375: [ParNew: 224663K->4547K(245760K), 0.0036117 secs] 435210K->215204K(791936K), 0.0036859 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:06.210+0200: 1498.155: [GC (Allocation Failure) 1498.155: [ParNew: 223043K->4047K(245760K), 0.0033808 secs] 433700K->214776K(791936K), 0.0034438 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:08.981+0200: 1500.925: [GC (Allocation Failure) 1500.925: [ParNew: 222543K->7795K(245760K), 0.0057358 secs] 433272K->218712K(791936K), 0.0058062 secs] [Times: user=0.11 sys=0.00, real=0.01 secs] +2016-04-14T22:55:12.141+0200: 1504.086: [GC (Allocation Failure) 1504.086: [ParNew: 226291K->5382K(245760K), 0.0030976 secs] 437208K->216365K(791936K), 0.0031578 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:55:15.385+0200: 1507.329: [GC (Allocation Failure) 1507.329: [ParNew: 223878K->3524K(245760K), 0.0029638 secs] 434861K->214568K(791936K), 0.0030468 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:18.192+0200: 1510.137: [GC (Allocation Failure) 1510.137: [ParNew: 222020K->2457K(245760K), 0.0030193 secs] 433064K->213553K(791936K), 0.0030948 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:21.235+0200: 1513.180: [GC (Allocation Failure) 1513.180: [ParNew: 220953K->5237K(245760K), 0.0032777 secs] 432049K->216391K(791936K), 0.0033486 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:55:24.520+0200: 1516.464: [GC (Allocation Failure) 1516.464: [ParNew: 223733K->5863K(245760K), 0.0035072 secs] 434887K->217101K(791936K), 0.0036351 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:27.910+0200: 1519.855: [GC (Allocation Failure) 1519.855: [ParNew: 224359K->3691K(245760K), 0.0027972 secs] 435597K->214978K(791936K), 0.0028593 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:31.098+0200: 1523.042: [GC (Allocation Failure) 1523.042: [ParNew: 221929K->3150K(245760K), 0.0028420 secs] 433217K->214553K(791936K), 0.0029218 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:34.004+0200: 1525.949: [GC (Allocation Failure) 1525.949: [ParNew: 221646K->4666K(245760K), 0.0041128 secs] 433049K->216184K(791936K), 0.0041804 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:55:36.711+0200: 1528.655: [GC (Allocation Failure) 1528.655: [ParNew: 223162K->3428K(245760K), 0.0029138 secs] 434680K->215052K(791936K), 0.0029931 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:38.945+0200: 1530.889: [GC (Allocation Failure) 1530.889: [ParNew: 221839K->4873K(245760K), 0.0042093 secs] 433463K->216549K(791936K), 0.0043068 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:42.879+0200: 1534.824: [GC (Allocation Failure) 1534.824: [ParNew: 223369K->4412K(245760K), 0.0040405 secs] 435045K->216260K(791936K), 0.0041179 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:46.707+0200: 1538.651: [GC (Allocation Failure) 1538.651: [ParNew: 222908K->6960K(245760K), 0.0052837 secs] 434756K->218852K(791936K), 0.0053560 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:49.442+0200: 1541.387: [GC (Allocation Failure) 1541.387: [ParNew: 225456K->5665K(245760K), 0.0025714 secs] 437348K->217628K(791936K), 0.0026423 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:53.354+0200: 1545.298: [GC (Allocation Failure) 1545.298: [ParNew: 223307K->3111K(245760K), 0.0032847 secs] 435269K->215132K(791936K), 0.0033556 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:56.325+0200: 1548.269: [GC (Allocation Failure) 1548.269: [ParNew: 221607K->4038K(245760K), 0.0036313 secs] 433628K->216130K(791936K), 0.0037018 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:55:59.353+0200: 1551.298: [GC (Allocation Failure) 1551.298: [ParNew: 222534K->4608K(245760K), 0.0037494 secs] 434626K->217115K(791936K), 0.0038305 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:03.021+0200: 1554.966: [GC (Allocation Failure) 1554.966: [ParNew: 223104K->6169K(245760K), 0.0045853 secs] 435611K->218778K(791936K), 0.0046455 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:06.517+0200: 1558.461: [GC (Allocation Failure) 1558.461: [ParNew: 224665K->4341K(245760K), 0.0036388 secs] 437274K->217079K(791936K), 0.0037200 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:09.034+0200: 1560.979: [GC (Allocation Failure) 1560.979: [ParNew: 222837K->3082K(245760K), 0.0025574 secs] 435575K->215889K(791936K), 0.0026265 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:12.473+0200: 1564.417: [GC (Allocation Failure) 1564.418: [ParNew: 221578K->2068K(245760K), 0.0027422 secs] 434385K->214988K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:15.824+0200: 1567.769: [GC (Allocation Failure) 1567.769: [ParNew: 220564K->2439K(245760K), 0.0025924 secs] 433484K->215481K(791936K), 0.0026657 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:19.061+0200: 1571.005: [GC (Allocation Failure) 1571.005: [ParNew: 220935K->4888K(245760K), 0.0036701 secs] 433977K->218014K(791936K), 0.0037475 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:56:21.642+0200: 1573.587: [GC (Allocation Failure) 1573.587: [ParNew: 223384K->3300K(245760K), 0.0027352 secs] 436510K->216458K(791936K), 0.0028070 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:25.027+0200: 1576.971: [GC (Allocation Failure) 1576.971: [ParNew: 221796K->3580K(245760K), 0.0029423 secs] 434954K->216902K(791936K), 0.0030734 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:27.886+0200: 1579.831: [GC (Allocation Failure) 1579.831: [ParNew: 222076K->5462K(245760K), 0.0041711 secs] 435398K->218876K(791936K), 0.0042373 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:30.657+0200: 1582.601: [GC (Allocation Failure) 1582.601: [ParNew: 223650K->4022K(245760K), 0.0032348 secs] 437063K->217515K(791936K), 0.0033416 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:56:34.393+0200: 1586.337: [GC (Allocation Failure) 1586.337: [ParNew: 222518K->6130K(245760K), 0.0039243 secs] 436011K->219650K(791936K), 0.0040101 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:38.239+0200: 1590.184: [GC (Allocation Failure) 1590.184: [ParNew: 224610K->5006K(245760K), 0.0027771 secs] 438131K->218567K(791936K), 0.0028350 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:41.125+0200: 1593.069: [GC (Allocation Failure) 1593.069: [ParNew: 223098K->4031K(245760K), 0.0029297 secs] 436659K->217674K(791936K), 0.0030025 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:56:44.161+0200: 1596.105: [GC (Allocation Failure) 1596.105: [ParNew: 222527K->4877K(245760K), 0.0032945 secs] 436170K->218559K(791936K), 0.0033608 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:46.995+0200: 1598.939: [GC (Allocation Failure) 1598.939: [ParNew: 223373K->3514K(245760K), 0.0037815 secs] 437055K->217636K(791936K), 0.0038492 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:49.730+0200: 1601.676: [GC (Allocation Failure) 1601.676: [ParNew: 221292K->3288K(245760K), 0.0029782 secs] 435414K->217564K(791936K), 0.0030529 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:53.243+0200: 1605.188: [GC (Allocation Failure) 1605.188: [ParNew: 221784K->2803K(245760K), 0.0031406 secs] 436060K->217155K(791936K), 0.0032040 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:56.489+0200: 1608.433: [GC (Allocation Failure) 1608.433: [ParNew: 221299K->3318K(245760K), 0.0033454 secs] 435651K->217769K(791936K), 0.0034037 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:56:59.180+0200: 1611.124: [GC (Allocation Failure) 1611.124: [ParNew: 221814K->3292K(245760K), 0.0034951 secs] 436265K->217808K(791936K), 0.0035581 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:02.092+0200: 1614.036: [GC (Allocation Failure) 1614.036: [ParNew: 221788K->2478K(245760K), 0.0031462 secs] 436304K->217045K(791936K), 0.0032124 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:05.131+0200: 1617.075: [GC (Allocation Failure) 1617.075: [ParNew: 220974K->2613K(245760K), 0.0026689 secs] 435541K->217255K(791936K), 0.0027352 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:09.517+0200: 1621.461: [GC (Allocation Failure) 1621.461: [ParNew: 221109K->4830K(245760K), 0.0037545 secs] 435751K->219528K(791936K), 0.0038371 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:57:12.438+0200: 1624.383: [GC (Allocation Failure) 1624.383: [ParNew: 222715K->4352K(245760K), 0.0029987 secs] 437413K->219099K(791936K), 0.0030575 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] +2016-04-14T22:57:14.809+0200: 1626.753: [GC (Allocation Failure) 1626.753: [ParNew: 222848K->4359K(245760K), 0.0033360 secs] 437595K->219143K(791936K), 0.0034116 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:17.384+0200: 1629.328: [GC (Allocation Failure) 1629.328: [ParNew: 222855K->3721K(245760K), 0.0029316 secs] 437639K->218577K(791936K), 0.0030053 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:20.411+0200: 1632.356: [GC (Allocation Failure) 1632.356: [ParNew: 222217K->2765K(245760K), 0.0035450 secs] 437073K->217894K(791936K), 0.0036131 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:23.232+0200: 1635.177: [GC (Allocation Failure) 1635.177: [ParNew: 221261K->3600K(245760K), 0.0029857 secs] 436390K->218826K(791936K), 0.0030645 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:26.512+0200: 1638.457: [GC (Allocation Failure) 1638.457: [ParNew: 222096K->5266K(245760K), 0.0034634 secs] 437322K->220556K(791936K), 0.0035301 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:29.757+0200: 1641.702: [GC (Allocation Failure) 1641.702: [ParNew: 223762K->5015K(245760K), 0.0034284 secs] 439052K->220407K(791936K), 0.0035058 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:32.164+0200: 1644.108: [GC (Allocation Failure) 1644.108: [ParNew: 223511K->3319K(245760K), 0.0033971 secs] 438903K->218775K(791936K), 0.0035016 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:34.786+0200: 1646.730: [GC (Allocation Failure) 1646.730: [ParNew: 221815K->4781K(245760K), 0.0049987 secs] 437271K->220297K(791936K), 0.0050691 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] +2016-04-14T22:57:38.998+0200: 1650.942: [GC (Allocation Failure) 1650.942: [ParNew: 223071K->4196K(245760K), 0.0026101 secs] 438587K->219831K(791936K), 0.0026871 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:42.082+0200: 1654.026: [GC (Allocation Failure) 1654.026: [ParNew: 222692K->7231K(245760K), 0.0048625 secs] 438327K->222927K(791936K), 0.0049334 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:44.700+0200: 1656.644: [GC (Allocation Failure) 1656.644: [ParNew: 225727K->5237K(245760K), 0.0026824 secs] 441423K->220962K(791936K), 0.0027464 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:47.604+0200: 1659.549: [GC (Allocation Failure) 1659.549: [ParNew: 223733K->4004K(245760K), 0.0032376 secs] 439458K->219802K(791936K), 0.0033164 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:50.811+0200: 1662.755: [GC (Allocation Failure) 1662.756: [ParNew: 222500K->5354K(245760K), 0.0037064 secs] 438298K->221286K(791936K), 0.0037778 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:57:53.942+0200: 1665.887: [GC (Allocation Failure) 1665.887: [ParNew: 223850K->4533K(245760K), 0.0030790 secs] 439782K->220736K(791936K), 0.0031867 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:57:58.259+0200: 1670.204: [GC (Allocation Failure) 1670.204: [ParNew: 223029K->3646K(245760K), 0.0032399 secs] 439232K->219972K(791936K), 0.0033253 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:01.252+0200: 1673.197: [GC (Allocation Failure) 1673.197: [ParNew: 222142K->3566K(245760K), 0.0027813 secs] 438468K->220046K(791936K), 0.0028541 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:04.354+0200: 1676.298: [GC (Allocation Failure) 1676.298: [ParNew: 222062K->2976K(245760K), 0.0027431 secs] 438542K->219513K(791936K), 0.0028056 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:07.407+0200: 1679.352: [GC (Allocation Failure) 1679.352: [ParNew: 221472K->3500K(245760K), 0.0028527 secs] 438009K->220113K(791936K), 0.0029148 secs] [Times: user=0.05 sys=0.00, real=0.00 secs] +2016-04-14T22:58:11.487+0200: 1683.431: [GC (Allocation Failure) 1683.431: [ParNew: 221976K->2941K(245760K), 0.0025672 secs] 438588K->219622K(791936K), 0.0026377 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:15.622+0200: 1687.566: [GC (Allocation Failure) 1687.566: [ParNew: 221437K->3108K(245760K), 0.0031480 secs] 438118K->219865K(791936K), 0.0032227 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:18.458+0200: 1690.403: [GC (Allocation Failure) 1690.403: [ParNew: 221604K->2194K(245760K), 0.0027902 secs] 438361K->219033K(791936K), 0.0028467 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:21.598+0200: 1693.542: [GC (Allocation Failure) 1693.542: [ParNew: 220690K->2657K(245760K), 0.0028672 secs] 437529K->219543K(791936K), 0.0029353 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:24.622+0200: 1696.567: [GC (Allocation Failure) 1696.567: [ParNew: 221153K->4492K(245760K), 0.0031261 secs] 438039K->221422K(791936K), 0.0032147 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:27.395+0200: 1699.340: [GC (Allocation Failure) 1699.340: [ParNew: 222988K->4831K(245760K), 0.0033178 secs] 439918K->221953K(791936K), 0.0033957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:30.831+0200: 1702.776: [GC (Allocation Failure) 1702.776: [ParNew: 223327K->5281K(245760K), 0.0037144 secs] 440449K->222457K(791936K), 0.0037951 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:34.225+0200: 1706.170: [GC (Allocation Failure) 1706.170: [ParNew: 223777K->3503K(245760K), 0.0029680 secs] 440953K->220795K(791936K), 0.0030323 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:37.103+0200: 1709.048: [GC (Allocation Failure) 1709.048: [ParNew: 221999K->2840K(245760K), 0.0034792 secs] 439291K->220186K(791936K), 0.0035497 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:39.982+0200: 1711.927: [GC (Allocation Failure) 1711.927: [ParNew: 221336K->3799K(245760K), 0.0030076 secs] 438682K->221263K(791936K), 0.0030916 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:43.047+0200: 1714.991: [GC (Allocation Failure) 1714.991: [ParNew: 222295K->3252K(245760K), 0.0031485 secs] 439759K->220842K(791936K), 0.0032250 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:58:46.269+0200: 1718.214: [GC (Allocation Failure) 1718.214: [ParNew: 221748K->2456K(245760K), 0.0027688 secs] 439338K->220121K(791936K), 0.0028369 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:50.361+0200: 1722.305: [GC (Allocation Failure) 1722.305: [ParNew: 220952K->3158K(245760K), 0.0031093 secs] 438617K->220878K(791936K), 0.0031662 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] +2016-04-14T22:58:52.844+0200: 1724.789: [GC (Allocation Failure) 1724.789: [ParNew: 221654K->3351K(245760K), 0.0029535 secs] 439374K->221140K(791936K), 0.0030235 secs] [Times: user=0.09 sys=0.00, real=0.00 secs] +2016-04-14T22:58:55.773+0200: 1727.718: [GC (Allocation Failure) 1727.718: [ParNew: 221847K->2718K(245760K), 0.0027580 secs] 439636K->220534K(791936K), 0.0028159 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:58:58.952+0200: 1730.896: [GC (Allocation Failure) 1730.896: [ParNew: 221214K->3100K(245760K), 0.0026447 secs] 439030K->220987K(791936K), 0.0027100 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +2016-04-14T22:59:01.774+0200: 1733.718: [GC (Allocation Failure) 1733.718: [ParNew: 221596K->4566K(245760K), 0.0035184 secs] 439483K->222560K(791936K), 0.0035903 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:06.071+0200: 1738.016: [GC (Allocation Failure) 1738.016: [ParNew: 223062K->6864K(245760K), 0.0040918 secs] 441056K->225053K(791936K), 0.0041524 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:08.982+0200: 1740.927: [GC (Allocation Failure) 1740.927: [ParNew: 225360K->6574K(245760K), 0.0047379 secs] 443549K->224843K(791936K), 0.0048093 secs] [Times: user=0.13 sys=0.00, real=0.00 secs] +2016-04-14T22:59:12.286+0200: 1744.230: [GC (Allocation Failure) 1744.231: [ParNew: 225070K->5009K(245760K), 0.0028551 secs] 443339K->223349K(791936K), 0.0029325 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:16.272+0200: 1748.217: [GC (Allocation Failure) 1748.217: [ParNew: 223476K->3371K(245760K), 0.0028065 secs] 441816K->221787K(791936K), 0.0028691 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +2016-04-14T22:59:19.587+0200: 1751.531: [GC (Allocation Failure) 1751.531: [ParNew: 221867K->3743K(245760K), 0.0028765 secs] 440283K->222200K(791936K), 0.0029577 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] +Heap + par new generation total 245760K, used 147078K [0x00000000ce000000, 0x00000000deaa0000, 0x00000000deaa0000) + eden space 218496K, 65% used [0x00000000ce000000, 0x00000000d6bf9b58, 0x00000000db560000) + from space 27264K, 13% used [0x00000000db560000, 0x00000000db907cd0, 0x00000000dd000000) + to space 27264K, 0% used [0x00000000dd000000, 0x00000000dd000000, 0x00000000deaa0000) + concurrent mark-sweep generation total 546176K, used 218457K [0x00000000deaa0000, 0x0000000100000000, 0x0000000100000000) + Metaspace used 85838K, capacity 86786K, committed 87096K, reserved 1124352K + class space used 12176K, capacity 12408K, committed 12460K, reserved 1048576K +2016-04-14 23:26:45 GC log file has reached the maximum size. Saved as logs/garbageCollection.log.5 diff --git a/src/test/resources/openjdk/SampleSun1_8_0Series-Part7.txt b/src/test/resources/openjdk/SampleSun1_8_0Series-Part7.txt new file mode 100644 index 00000000..61772116 --- /dev/null +++ b/src/test/resources/openjdk/SampleSun1_8_0Series-Part7.txt @@ -0,0 +1,4 @@ +2016-04-14 23:26:45 GC log file created logs/garbageCollection.log.6 +Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8.0_45-b15), built on Apr 30 2015 12:40:44 by "java_re" with MS VC++ 10.0 (VS2010) +Memory: 4k page, physical 16664956k(9044256k free), swap 20473812k(9734820k free) +CommandLine flags: -XX:CICompilerCount=4 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:GCLogFileSize=20480 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs -XX:InitialHeapSize=838860800 -XX:MaxHeapSize=838860800 -XX:MaxNewSize=279576576 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=279576576 -XX:NumberOfGCLogFiles=10 -XX:OldPLABSize=16 -XX:OldSize=559284224 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+ScavengeBeforeFullGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC From 1895bd38ee3f7653ecec69a29d639efc9dcf112b Mon Sep 17 00:00:00 2001 From: "martin.geldmacher" Date: Fri, 6 May 2016 20:12:29 +0200 Subject: [PATCH 6/8] Allowing opening logfile series from "recent" files (follow up for #61) When a series of logfiles was recently opened, it can now be reopened from the "recent" menu. In order to support this, GCResourceGroup was refactored and now only stores the URL of a Resource instead of the whole resource (as it apparently was already before). This allows to also store GcResourceSeries in the same way as regular GcResources. --- .../impl/GCModelLoaderControllerImpl.java | 6 +- .../impl/RecentGCResourcesMenuController.java | 9 +- .../perf/gcviewer/view/GCViewerGui.java | 26 ++- .../gcviewer/view/model/GCResourceGroup.java | 191 +++++++++++------- .../impl/TestGCModelLoaderController.java | 78 ++++--- .../view/model/TestGCResourceGroup.java | 76 ++++++- 6 files changed, 262 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java index d26dc91f..a728d447 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelLoaderControllerImpl.java @@ -68,7 +68,7 @@ public void add(List gcResourceList) { } private void addGCResource(GCResource gcResource) { - GCModelLoader loader = new GCModelLoaderImpl(gcResource); + GCModelLoader loader = GCModelLoaderFactory.createFor(gcResource); GCDocumentController docController = getDocumentController(gcViewerGui.getSelectedGCDocument()); docController.addGCResource(loader, getViewMenuController()); @@ -113,7 +113,7 @@ private ViewMenuController getViewMenuController() { } private void openGCResource(GCResource gcResource) { - GCModelLoader loader = new GCModelLoaderImpl(gcResource); + GCModelLoader loader = GCModelLoaderFactory.createFor(gcResource); openGCResource(gcResource, loader); } @@ -150,7 +150,7 @@ public void open(GCResource gcResource) { @Override public void open(List gcResourceList) { for (int i = 0; i < gcResourceList.size(); ++i) { - GCResource gcResource = new GcResourceFile(gcResourceList.get(i).getResourceName()); + GCResource gcResource = gcResourceList.get(i); if (i == 0) { openGCResource(gcResource); diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/RecentGCResourcesMenuController.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/RecentGCResourcesMenuController.java index 2032aaf8..23be46b7 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/RecentGCResourcesMenuController.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/RecentGCResourcesMenuController.java @@ -1,8 +1,5 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; -import javax.swing.JMenu; -import javax.swing.JMenuItem; - import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; import com.tagtraum.perf.gcviewer.ctrl.action.OpenRecent; import com.tagtraum.perf.gcviewer.view.RecentGCResourcesMenu; @@ -10,6 +7,8 @@ import com.tagtraum.perf.gcviewer.view.model.RecentGCResourcesListener; import com.tagtraum.perf.gcviewer.view.model.RecentGCResourcesModel; +import javax.swing.*; + /** * Controller for the {@link RecentGCResourcesMenu} keeping it in sync with the {@link RecentGCResourcesModel}. * @@ -41,9 +40,7 @@ public void remove(RecentGCResourcesEvent e) { */ @Override public void add(RecentGCResourcesEvent e) { - // TODO It is not a good idea to store GCResources in the recent menu -> whole model is stored in there! - // TODO should be only URL / string of the resource (as it was in the earlier implementation :-() - menu.add(new JMenuItem(new OpenRecent(controller, + menu.add(new JMenuItem(new OpenRecent(controller, e.getResourceNameGroup())), e.getPosition()); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGui.java b/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGui.java index efb36eb2..0b153e8a 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGui.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/GCViewerGui.java @@ -1,15 +1,14 @@ package com.tagtraum.perf.gcviewer.view; -import java.awt.BorderLayout; +import com.tagtraum.perf.gcviewer.view.model.GCPreferences; + +import javax.swing.*; +import java.awt.*; import java.beans.PropertyVetoException; +import java.util.ArrayList; +import java.util.List; import java.util.Map; -import javax.swing.Action; -import javax.swing.JDesktopPane; -import javax.swing.JFrame; - -import com.tagtraum.perf.gcviewer.view.model.GCPreferences; - /** * This is the main window of GCViewer. * @@ -66,7 +65,18 @@ public RecentGCResourcesMenu getRecentGCResourcesMenu() { public GCDocument getSelectedGCDocument() { return (GCDocument)desktopPane.getSelectedFrame(); } - + + public List getAllGCDocuments() { + List documents = new ArrayList<>(); + for (JInternalFrame frame : desktopPane.getAllFrames()) { + if (frame instanceof GCDocument) { + GCDocument document = (GCDocument) frame; + documents.add(document); + } + } + return documents; + } + public GCViewerGuiToolBar getToolBar() { return toolBar; } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java index 8feae3f4..d60f8115 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java @@ -2,111 +2,154 @@ import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; +import java.io.File; import java.net.MalformedURLException; +import java.net.URL; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.StringJoiner; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.stream.Collectors; /** *

Holds a group of resource names (those displayed in the same GCDocument).

- * + *

*

This class was refactored from "URLSet".

+ * * @author Joerg Wuethrich - *

created on: 05.03.2014

+ *

created on: 05.03.2014

*/ public class GCResourceGroup { - - private List gcResourceList; + private static final Logger logger = Logger.getLogger(GCResourceGroup.class.getName()); + public static final String RESOURCE_SEPARATOR = ";"; + public static final String SERIES_SEPARATOR = ">"; + private List gcResourceList; public GCResourceGroup(List gcResourceList) { - this.gcResourceList = gcResourceList.stream() - .map(gcResource -> new GcResourceFile(gcResource.getResourceName())) - .collect(Collectors.toList()); + this.gcResourceList = gcResourceList.stream().map(this::getResourceUrlString).collect(Collectors.toList()); } - + /** - * Initialise a group from a single string consisting of resource names separated by ";" - * + * Initialise a group from a single string consisting of {@link GcResourceFile}s separated by "{@value RESOURCE_SEPARATOR}" + * and contents of a {@link GcResourceSeries} separated by {@value SERIES_SEPARATOR}. + * * @param resourceNameGroup resource names separated by ";" */ public GCResourceGroup(String resourceNameGroup) { - if (resourceNameGroup.indexOf(";") >= 0) { - setGCResourceList(resourceNameGroup.split(";")); + String[] resources = resourceNameGroup.split(RESOURCE_SEPARATOR); + gcResourceList = getResourceUrlString(resources); + } + + private List getResourceUrlString(String[] resources) { + List urls = new ArrayList<>(); + for (String resource : resources) { + String url = getResourceUrlString(resource); + if (url != null) { + urls.add(url); + } } - else { - setGCResourceList(new String[]{ resourceNameGroup }); + return urls; + } + + private String getResourceUrlString(String resource) { + URL url = null; + try { + if (resource.startsWith("http") || resource.startsWith("file")) { + url = new URL(resource); + } + else { + url = new File(resource).toURI().toURL(); + } + } + catch (MalformedURLException ex) { + logger.log(Level.WARNING, "Failed to determine URL of " + resource + ". Reason: " + ex.getMessage()); + logger.log(Level.FINER, "Details: ", ex); + } + return url != null ? url.toString() : null; } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - GCResourceGroup other = (GCResourceGroup) obj; - if (gcResourceList == null) { - if (other.gcResourceList != null) - return false; - } else if (!gcResourceList.equals(other.gcResourceList)) - return false; - return true; + + private String getResourceUrlString(GCResource gcResource) { + if (gcResource instanceof GcResourceFile) + return ((GcResourceFile) gcResource).getResourceNameAsUrlString(); + else if (gcResource instanceof GcResourceSeries) { + StringJoiner joiner = new StringJoiner(SERIES_SEPARATOR); + for (GCResource inner : ((GcResourceSeries) gcResource).getResourcesInOrder()) { + joiner.add(((GcResourceFile) inner).getResourceNameAsUrlString()); + } + return joiner.toString(); + } + else + throw new IllegalArgumentException("Unknown GCResource type!"); } /** * Get all resources names as an array of strings. - * + * * @return resource names as array of strings */ public List getGCResourceList() { - return Collections.unmodifiableList(gcResourceList); + List resources = new ArrayList<>(); + for (String entry : gcResourceList) { + GCResource resource = getGcResource(entry); + resources.add(resource); + } + + return resources; + } + + private GCResource getGcResource(String entry) { + GCResource resource; + if (entry.contains(SERIES_SEPARATOR)) { + resource = getGcResourceSeries(entry); + } + else { + resource = new GcResourceFile(entry); + } + return resource; + } + + private GCResource getGcResourceSeries(String entry) { + GCResource resource; + List series = new ArrayList<>(); + for (String s : entry.split(SERIES_SEPARATOR)) { + series.add(new GcResourceFile(s)); + } + + resource = new GcResourceSeries(series); + return resource; } /** * Get all resource names of the group formatted as URLs separated by a ";" - * + * * @return single string with all resource names separated by a ";" */ public String getUrlGroupString() { StringBuilder sb = new StringBuilder(); - for (GCResource gcResource : gcResourceList) { - try { - String url; - if(gcResource instanceof GcResourceFile) { - url = ((GcResourceFile) gcResource).getResourceNameAsUrl().toString(); - } - else { - // no URL available -> fallback - url = gcResource.getResourceName(); - } - sb.append(url).append(";"); - } - catch (MalformedURLException e) { - // ignore it - } + for (String resource : gcResourceList) { + sb.append(resource).append(RESOURCE_SEPARATOR); } - + return sb.toString(); } - + /** * Get short version of resource names (only file name without path), if more than one * resource is in this group. - * + * * @return get short group name (only file name without path), if there is more than one * resource */ public String getGroupStringShort() { if (gcResourceList.size() > 1) { StringBuilder sb = new StringBuilder(); - for (GCResource gcResource : gcResourceList) { + for (String resourceName : gcResourceList) { // test for "/" and "\\" because in Windows you have a "/" in a http url // but "\\" in file strings - String resourceName = gcResource.getResourceName(); int lastIndexOfPathSeparator = resourceName.lastIndexOf("/"); if (lastIndexOfPathSeparator < 0) { lastIndexOfPathSeparator = resourceName.lastIndexOf("\\"); @@ -116,36 +159,38 @@ public String getGroupStringShort() { return sb.toString(); } else { - GCResource singleResource = gcResourceList.get(0); - if(singleResource instanceof GcResourceFile) - { - return ((GcResourceFile) singleResource).getResourceNameAsUrlString(); - } - else - // no URL available -> fallback - return singleResource.getResourceName(); + return gcResourceList.get(0); } } - + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + GCResourceGroup other = (GCResourceGroup) obj; + if (gcResourceList == null) { + if (other.gcResourceList != null) + return false; + } + else if (!gcResourceList.equals(other.gcResourceList)) + return false; + return true; + } + @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result - + ((gcResourceList == null) ? 0 : gcResourceList.hashCode()); + result = prime * result + ((gcResourceList == null) ? 0 : gcResourceList.hashCode()); return result; } - private void setGCResourceList(String[] resourceNames) { - gcResourceList = new ArrayList<>(); - for (String resourceName : resourceNames) { - gcResourceList.add(new GcResourceFile(resourceName)); - } - } - @Override public String toString() { return "RecentGCResourceGroup [gcResourceList=" + gcResourceList + "]"; } - } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java index 3a962e80..25a7ac82 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/ctrl/impl/TestGCModelLoaderController.java @@ -1,7 +1,9 @@ package com.tagtraum.perf.gcviewer.ctrl.impl; import com.tagtraum.perf.gcviewer.UnittestHelper; +import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import com.tagtraum.perf.gcviewer.view.GCViewerGui; import com.tagtraum.perf.gcviewer.view.model.GCPreferences; import org.junit.Before; @@ -13,39 +15,35 @@ import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDropEvent; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import static org.hamcrest.core.Is.is; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; -import com.tagtraum.perf.gcviewer.UnittestHelper; -import com.tagtraum.perf.gcviewer.model.GCResource; -import com.tagtraum.perf.gcviewer.view.GCViewerGui; -import com.tagtraum.perf.gcviewer.view.model.GCPreferences; - /** * Unittest for main controller class of GCViewerGui ({@link GCModelLoaderControllerImpl}). * This is rather an integration test than a unittest, so if one of these tests fail, first * check other failures before checking here. - * + * * @author Joerg Wuethrich - *

created on: 05.01.2014

+ *

created on: 05.01.2014

*/ public class TestGCModelLoaderController { private GCModelLoaderControllerImpl controller; - + private GCViewerGui gcViewerGui; + @Before public void setUp() throws Exception { - GCViewerGui gcViewerGui = new GCViewerGui(); + gcViewerGui = new GCViewerGui(); controller = new GCModelLoaderControllerImpl(gcViewerGui); new GCViewerGuiBuilder().initGCViewerGui(gcViewerGui, controller); new GCViewerGuiController().applyPreferences(gcViewerGui, new GCPreferences()); } - + @Test public void openStringFail() throws Exception { controller.open(new GcResourceFile("does_not_exist")); @@ -57,19 +55,25 @@ public void openString() throws Exception { assertThat("number of gcdocuments before", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(0)); controller.open(new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt"))); assertThat("number of gcdocuments after", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); - + } @Test public void openAsSeries() throws Exception { assertThat("number of gcdocuments before", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(0)); + ArrayList gcResourceList = getGcResourcesForSeries(); + + controller.openAsSeries(gcResourceList); + assertThat("number of gcdocuments after", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); // Input files are merged -> only one file is open + assertThat(getOpenResources(), contains(new GcResourceSeries(gcResourceList))); + } + + private ArrayList getGcResourcesForSeries() throws IOException { ArrayList gcResourceList = new ArrayList<>(); gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath())); gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath())); gcResourceList.add(new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath())); - - controller.openAsSeries(gcResourceList); - assertThat("number of gcdocuments after", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); // Input files are merged -> only one file is open + return gcResourceList; } /** @@ -79,20 +83,48 @@ public void openAsSeries() throws Exception { public void dropOnDesktopPane() throws Exception { // TODO SWINGWORKER: test drag and drop on GCDocument assertThat("number of gcdocuments before", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(0)); - + List fileList = new ArrayList(); fileList.add(new File(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0G1_MarkStackFull.txt").getPath())); - + Transferable tr = Mockito.mock(Transferable.class); Mockito.when(tr.getTransferData(DataFlavor.javaFileListFlavor)).thenReturn(fileList); - + DropTargetDropEvent dte = Mockito.mock(DropTargetDropEvent.class); Mockito.when(dte.isDataFlavorSupported(DataFlavor.javaFileListFlavor)).thenReturn(true); Mockito.when(dte.getTransferable()).thenReturn(tr); - + DropTarget target = controller.getGCViewerGui().getDesktopPane().getDropTarget(); target.drop(dte); - + assertThat("number of gcdocuments after drop", controller.getGCViewerGui().getDesktopPane().getAllFrames().length, is(1)); } + + @Test + public void open_File() throws Exception { + File[] files = new File[1]; + File file = new File(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); + files[0] = file; + controller.open(files); + assertThat(getOpenResources(), contains(new GcResourceFile(file))); + } + + @Test + public void open_GcResourceFile() throws Exception { + GCResource resource = new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); + controller.open(resource); + assertThat(getOpenResources(), contains(resource)); + } + + @Test + public void open_GcResourceSeries() throws Exception { + List resources = getGcResourcesForSeries(); + GCResource series = new GcResourceSeries(resources); + controller.open(series); + assertThat(getOpenResources(), contains(series)); + } + + private List getOpenResources() { + return gcViewerGui.getAllGCDocuments().stream().flatMap(x -> x.getGCResources().stream()).collect(Collectors.toList()); + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java index 86ee870e..3c1e1ce8 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java @@ -4,19 +4,28 @@ import com.tagtraum.perf.gcviewer.model.GCEvent; import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.model.GcResourceFile; -import org.junit.Assert; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertThat; /** * Test for {@link GCResourceGroup} class. */ public class TestGCResourceGroup { + + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + private List gcResourceList; @Before @@ -33,31 +42,76 @@ public void setup() { } @Test - public void constructorList() { - Assert.assertThat("has event before", gcResourceList.get(0).getModel().size(), is(1)); + public void testGCResourceGroup_List() { + assertThat("has event before", gcResourceList.get(0).getModel().size(), is(1)); GCResourceGroup group = new GCResourceGroup(gcResourceList); - Assert.assertThat("has still the event from before", gcResourceList.get(0).getModel().size(), is(1)); - Assert.assertThat("doesn't have event inside group", group.getGCResourceList().get(0).getModel().size(), is(0)); + assertThat("has still the event from before", gcResourceList.get(0).getModel().size(), is(1)); + assertThat("doesn't have event inside group", group.getGCResourceList().get(0).getModel().size(), is(0)); + } + + @Test + public void testGetGCResourceList_SingleFile() throws Exception { + File file = temporaryFolder.newFile(); + GCResourceGroup group = new GCResourceGroup(file.toURI().toURL().toString()); + assertThat(group.getGCResourceList(), contains(new GcResourceFile(file))); + } + + @Test + public void testGetGCResourceList_SeveralFiles() throws Exception { + File file1 = temporaryFolder.newFile(); + File file2 = temporaryFolder.newFile(); + File file3 = temporaryFolder.newFile(); + GCResourceGroup group = + new GCResourceGroup(file1.toURI().toURL().toString() + ";" + file2.toURI().toURL().toString() + ";" + file3.toURI().toURL().toString()); + assertThat(group.getGCResourceList(), contains(new GcResourceFile(file1), new GcResourceFile(file2), new GcResourceFile(file3))); + } + + @Test + public void testGetGCResourceList_SingleSeries() throws Exception { + File file1 = temporaryFolder.newFile(); + File file2 = temporaryFolder.newFile(); + File file3 = temporaryFolder.newFile(); + List resources = Arrays.asList(new GcResourceFile(file1), new GcResourceFile(file2), new GcResourceFile(file3)); + GCResourceGroup group = + new GCResourceGroup(file1.toURI().toURL().toString() + ">" + file2.toURI().toURL().toString() + ">" + file3.toURI().toURL().toString()); + assertThat(group.getGCResourceList(), contains(new GcResourceSeries(resources))); + } + + @Test + public void testGetGCResourceList_SeveralSeries() throws Exception { + File file1 = temporaryFolder.newFile(); + File file2 = temporaryFolder.newFile(); + File file3 = temporaryFolder.newFile(); + List resourcesForSeries1 = Arrays.asList(new GcResourceFile(file1), new GcResourceFile(file2), new GcResourceFile(file3)); + + File file4 = temporaryFolder.newFile(); + File file5 = temporaryFolder.newFile(); + File file6 = temporaryFolder.newFile(); + String resourceNameGroup1 = file1.toURI().toURL().toString() + ">" + file2.toURI().toURL().toString() + ">" + file3.toURI().toURL().toString(); + String resourceNameGroup2 = file4.toURI().toURL().toString() + ">" + file5.toURI().toURL().toString() + ">" + file6.toURI().toURL().toString(); + GCResourceGroup group = new GCResourceGroup(resourceNameGroup1 + ";" + resourceNameGroup2); + List resourcesForSeries2 = Arrays.asList(new GcResourceFile(file4), new GcResourceFile(file5), new GcResourceFile(file6)); + assertThat(group.getGCResourceList(), contains(new GcResourceSeries(resourcesForSeries1), new GcResourceSeries(resourcesForSeries2))); } @Test public void getUrlGroupString() { GCResourceGroup gcResourceGroup = new GCResourceGroup(gcResourceList); - Assert.assertThat("starts with", gcResourceGroup.getUrlGroupString(), startsWith("file")); - Assert.assertThat("contains resource 1", gcResourceGroup.getUrlGroupString(), containsString("gcResource1")); - Assert.assertThat("contains resource 2", gcResourceGroup.getUrlGroupString(), containsString("gcResource2")); + assertThat("starts with", gcResourceGroup.getUrlGroupString(), startsWith("file")); + assertThat("contains resource 1", gcResourceGroup.getUrlGroupString(), containsString("gcResource1")); + assertThat("contains resource 2", gcResourceGroup.getUrlGroupString(), containsString("gcResource2")); } @Test public void getGroupStringShort2Elements() { GCResourceGroup gcResourceGroup = new GCResourceGroup(gcResourceList); - Assert.assertThat(gcResourceGroup.getGroupStringShort(), equalTo("gcResource1;gcResource2;")); + assertThat(gcResourceGroup.getGroupStringShort(), equalTo("gcResource1;gcResource2;")); } @Test public void getGroupStringShort1Element() { GCResourceGroup gcResourceGroup = new GCResourceGroup("c:/temp/test/gc-log-file.log"); - Assert.assertThat("should start with", gcResourceGroup.getGroupStringShort(), startsWith("file:/")); - Assert.assertThat("should end with", gcResourceGroup.getGroupStringShort(), endsWith("/temp/test/gc-log-file.log")); + assertThat("should start with", gcResourceGroup.getGroupStringShort(), startsWith("file:/")); + assertThat("should end with", gcResourceGroup.getGroupStringShort(), endsWith("/temp/test/gc-log-file.log")); } } From 7a5b5a3457f8f897a6cff58287a365105d498e73 Mon Sep 17 00:00:00 2001 From: "martin.geldmacher" Date: Sat, 7 May 2016 19:32:22 +0200 Subject: [PATCH 7/8] Parse logfile series from commandline (#61) Commandline support for parsing logfile series has been added. Syntactically this is close to existing commandline arguments. Some additional refactoring was done to have a unified handling of the various types of resources that can be used. --- README.md | 8 ++-- .../com/tagtraum/perf/gcviewer/GCViewer.java | 29 ++++++------ .../perf/gcviewer/GCViewerArgsParser.java | 28 ++++++++--- .../ctrl/impl/GCViewerGuiController.java | 12 ++--- .../perf/gcviewer/TestGCViewerArgsParser.java | 46 +++++++++++++++---- 5 files changed, 84 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index db9fe14e..0902e263 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ is free software released under GNU LGPL. You can start GCViewer (gui) by simply double-clicking on gcviewer-1.3x.jar or running java -jar gcviewer-1.3x.jar (it needs a java 1.8 vm to run). -For a cmdline based report summary just type: -java -jar gcviewer-1.3x.jar gc.log summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY] - -to generate a report (including optional chart image file). +For a cmdline based report summary just type the following to generate a report (including optional chart image file): +`java -jar gcviewer-1.3x.jar gc.log summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]` +When logfile rotation (-XX:+UseGCLogFileRotation) is enabled, the logfiles can be read at once: +`java -jar gcviewer-1.3x.jar gc.log.0;gc.log.1;gc.log.2;gc.log.current summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]` Supported verbose:gc formats are: diff --git a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java index a815c88b..a59f5b8f 100755 --- a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java @@ -7,7 +7,7 @@ import com.tagtraum.perf.gcviewer.imp.DataReaderException; import com.tagtraum.perf.gcviewer.imp.DataReaderFacade; import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.view.SimpleChartRenderer; import java.io.File; @@ -27,7 +27,7 @@ public class GCViewer { private static final int EXIT_EXPORT_FAILED = -1; private static final int EXIT_ARGS_PARSE_FAILED = -2; - public static void main(final String[] args) throws InvocationTargetException, InterruptedException { + public static void main(final String[] args) throws InvocationTargetException, InterruptedException { new GCViewer().doMain(args); } @@ -47,14 +47,14 @@ public void doMain(String[] args) throws InvocationTargetException, InterruptedE } else if (argsParser.getArgumentCount() >= 2) { LOGGER.info("GCViewer command line mode"); - String gcfile = argsParser.getGcfile(); + GCResource gcResource = argsParser.getGcResource(); String summaryFilePath = argsParser.getSummaryFilePath(); String chartFilePath = argsParser.getChartFilePath(); DataWriterType type = argsParser.getType(); //export summary: try { - export(gcfile, summaryFilePath, chartFilePath, type); + export(gcResource, summaryFilePath, chartFilePath, type); LOGGER.info("export completed successfully"); System.exit(EXIT_OK); } @@ -64,22 +64,22 @@ else if (argsParser.getArgumentCount() >= 2) { } } else { - new GCViewerGuiController().startGui(argsParser.getArgumentCount() == 1 ? argsParser.getGcfile() : null); + new GCViewerGuiController().startGui(argsParser.getArgumentCount() == 1 ? argsParser.getGcResource() : null); } } - private void export(String gcFilename, String summaryFilePath, String chartFilePath, DataWriterType type) + private void export(GCResource gcResource, String summaryFilePath, String chartFilePath, DataWriterType type) throws IOException, DataReaderException { DataReaderFacade dataReaderFacade = new DataReaderFacade(); - GCModel model = dataReaderFacade.loadModel(new GcResourceFile(gcFilename)); + GCModel model = dataReaderFacade.loadModel(gcResource); exportType(model, summaryFilePath, type); if (chartFilePath != null) renderChart(model, chartFilePath); } - private void exportType(GCModel model, String summaryFilePath, DataWriterType type) throws IOException { + private void exportType(GCModel model, String summaryFilePath, DataWriterType type) throws IOException { try (DataWriter summaryWriter = DataWriterFactory.getDataWriter(new File(summaryFilePath), type)) { summaryWriter.write(model); } @@ -90,13 +90,16 @@ private void renderChart(GCModel model, String chartFilePath) throws IOException renderer.render(model, new FileOutputStream(new File(chartFilePath))); } - private static void usage() { - System.out.println("Welcome to GCViewer with cmdline"); + private static void usage() { + System.out.println("Welcome to GCViewer with cmdline"); System.out.println("java -jar gcviewer.jar [] -> opens gui and loads given file"); + System.out.println("java -jar gcviewer.jar [];[];[...] -> opens gui and loads given files as series of rotated logfiles"); System.out.println("java -jar gcviewer.jar [] [] -> cmdline: writes report to "); - System.out.println("java -jar gcviewer.jar [] [] [] " + - "-> cmdline: writes report to and renders gc chart to "); - System.out.println("java -jar gcviewer.jar [] [] [] [-t ]"); + System.out.println("java -jar gcviewer.jar [];[];[...] [] -> cmdline: loads given files as series of rotated logfiles and writes report to "); + System.out.println("java -jar gcviewer.jar [] [] [] -> cmdline: writes report to and renders gc chart to "); + System.out.println("java -jar gcviewer.jar [];[];[...] [] [] -> cmdline: loads given files as series of rotated logfiles and writes report to and renders gc chart to "); + System.out.println("java -jar gcviewer.jar [] [] [] [-t ]"); + System.out.println("java -jar gcviewer.jar [];[];[...] [] [] [-t ]"); } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/GCViewerArgsParser.java b/src/main/java/com/tagtraum/perf/gcviewer/GCViewerArgsParser.java index 3a1b20f0..0b99129e 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/GCViewerArgsParser.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/GCViewerArgsParser.java @@ -1,10 +1,14 @@ package com.tagtraum.perf.gcviewer; +import com.tagtraum.perf.gcviewer.exp.DataWriterType; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; - -import com.tagtraum.perf.gcviewer.exp.DataWriterType; +import java.util.stream.Collectors; /** * Parser for commandline arguments. @@ -18,7 +22,7 @@ public class GCViewerArgsParser { private int argumentCount; private String chartFilePath; - private String gcfile; + private String gcFile; private String summaryFilePath; private DataWriterType type = DataWriterType.SUMMARY; @@ -29,9 +33,19 @@ public int getArgumentCount() { public String getChartFilePath() { return chartFilePath; } - - public String getGcfile() { - return gcfile; + + public GCResource getGcResource() { + List files = Arrays.asList(gcFile.split(";")); + List resources = files.stream().map(GcResourceFile::new).collect(Collectors.toList()); + if (resources.isEmpty()) + throw new IllegalStateException("Found no valid resource!"); + + if (resources.size() == 1) { + return resources.get(0); + } + else { + return new GcResourceSeries(resources); + } } public String getSummaryFilePath() { @@ -65,7 +79,7 @@ else if (typeIdx != -1) { } argumentCount = argsList.size(); - gcfile = safeGetArgument(argsList, ARG_POS_GCFILE); + gcFile = safeGetArgument(argsList, ARG_POS_GCFILE); summaryFilePath = safeGetArgument(argsList, ARG_POS_SUMMARY_FILE); chartFilePath = safeGetArgument(argsList, ARG_POS_CHART_FILE); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java index a511a59a..13cf5901 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCViewerGuiController.java @@ -2,7 +2,7 @@ import com.tagtraum.perf.gcviewer.ctrl.GCModelLoaderController; import com.tagtraum.perf.gcviewer.ctrl.action.OpenFile; -import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GCResource; import com.tagtraum.perf.gcviewer.view.ActionCommands; import com.tagtraum.perf.gcviewer.view.GCDocument; import com.tagtraum.perf.gcviewer.view.GCViewerGui; @@ -107,16 +107,16 @@ private GCPreferences copyPreferencesFromGui(GCViewerGui gui) { /** * Start graphical user interface and load a log file (resourceName - if not null). * - * @param resourceName log file to be loaded at startup or null + * @param gcResource {@link GCResource} to be loaded at startup or null * @throws InvocationTargetException Some problem trying to start the gui * @throws InterruptedException Some problem trying to start the gui */ - public void startGui(final String resourceName) throws InvocationTargetException, InterruptedException { + public void startGui(final GCResource gcResource) throws InvocationTargetException, InterruptedException { final GCViewerGui gcViewerGui = new GCViewerGui(); final GCModelLoaderController modelLoaderController = new GCModelLoaderControllerImpl(gcViewerGui); Runnable guiStarter = new Runnable() { - + @Override public void run() { new GCViewerGuiBuilder().initGCViewerGui(gcViewerGui, modelLoaderController); @@ -129,12 +129,12 @@ public void run() { SwingUtilities.invokeAndWait(guiStarter); - if (resourceName != null) { + if (gcResource != null) { Runnable resourceLoader = new Runnable() { @Override public void run() { - modelLoaderController.open(new GcResourceFile(resourceName)); + modelLoaderController.open(gcResource); } }; diff --git a/src/test/java/com/tagtraum/perf/gcviewer/TestGCViewerArgsParser.java b/src/test/java/com/tagtraum/perf/gcviewer/TestGCViewerArgsParser.java index 10a5fe6c..deb0f1eb 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/TestGCViewerArgsParser.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/TestGCViewerArgsParser.java @@ -1,13 +1,16 @@ package com.tagtraum.perf.gcviewer; -import static org.hamcrest.Matchers.startsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - +import com.tagtraum.perf.gcviewer.exp.DataWriterType; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; import org.junit.Test; -import com.tagtraum.perf.gcviewer.exp.DataWriterType; +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.Matchers.startsWith; +import static org.junit.Assert.*; /** * Tests the class {@link com.tagtraum.perf.gcviewer.GCViewerArgsParser} @@ -35,7 +38,19 @@ public void onlyGCLog() throws Exception { gcViewerArgsParser.parseArguments(args); assertEquals(gcViewerArgsParser.getArgumentCount(), 1); - assertEquals(gcViewerArgsParser.getGcfile(), "some_gc.log"); + assertEquals(gcViewerArgsParser.getGcResource(), new GcResourceFile("some_gc.log")); + assertEquals(gcViewerArgsParser.getType(), DataWriterType.SUMMARY); + } + + @Test + public void onlyGcLogSeries() throws Exception { + String[] args = {"some_gc.log.0;some_gc.log.1;some_gc.log.2"}; + GCViewerArgsParser gcViewerArgsParser = new GCViewerArgsParser(); + gcViewerArgsParser.parseArguments(args); + + assertEquals(gcViewerArgsParser.getArgumentCount(), 1); + List resources = Arrays.asList(new GcResourceFile("some_gc.log.0"), new GcResourceFile("some_gc.log.1"), new GcResourceFile("some_gc.log.2")); + assertEquals(gcViewerArgsParser.getGcResource(), new GcResourceSeries(resources)); assertEquals(gcViewerArgsParser.getType(), DataWriterType.SUMMARY); } @@ -46,7 +61,20 @@ public void gcAndExportFile() throws Exception { gcViewerArgsParser.parseArguments(args); assertEquals(gcViewerArgsParser.getArgumentCount(), 2); - assertEquals(gcViewerArgsParser.getGcfile(), "some_gc.log"); + assertEquals(gcViewerArgsParser.getGcResource(), new GcResourceFile("some_gc.log")); + assertEquals(gcViewerArgsParser.getSummaryFilePath(), "export_to.csv"); + assertEquals(gcViewerArgsParser.getType(), DataWriterType.SUMMARY); + } + + @Test + public void gcSeriesAndExportFile() throws Exception { + String[] args = {"some_gc.log.0;some_gc.log.1;some_gc.log.2", "export_to.csv"}; + GCViewerArgsParser gcViewerArgsParser = new GCViewerArgsParser(); + gcViewerArgsParser.parseArguments(args); + + assertEquals(gcViewerArgsParser.getArgumentCount(), 2); + List resources = Arrays.asList(new GcResourceFile("some_gc.log.0"), new GcResourceFile("some_gc.log.1"), new GcResourceFile("some_gc.log.2")); + assertEquals(gcViewerArgsParser.getGcResource(), new GcResourceSeries(resources)); assertEquals(gcViewerArgsParser.getSummaryFilePath(), "export_to.csv"); assertEquals(gcViewerArgsParser.getType(), DataWriterType.SUMMARY); } @@ -68,7 +96,7 @@ public void allInitialArgsWithType() throws Exception { gcViewerArgsParser.parseArguments(args); assertEquals(gcViewerArgsParser.getArgumentCount(), 3); - assertEquals(gcViewerArgsParser.getGcfile(), "some_gc.log"); + assertEquals(gcViewerArgsParser.getGcResource(), new GcResourceFile("some_gc.log")); assertEquals(gcViewerArgsParser.getSummaryFilePath(), "export_to.csv"); assertEquals(gcViewerArgsParser.getChartFilePath(), "the_chart.png"); assertEquals(gcViewerArgsParser.getType(), DataWriterType.CSV); From 536ba648d5e100d4bd96a8eff84a20d1051f19ec Mon Sep 17 00:00:00 2001 From: "martin.geldmacher" Date: Sat, 11 Jun 2016 12:52:42 +0200 Subject: [PATCH 8/8] Several follow ups for #61 - In the "recent" menu, show shortened description for GcSeries - Added calculation of start date to GCModel - Fixed error when loading a GcSeries via Commandline - Other smaller improvements --- .../com/tagtraum/perf/gcviewer/GCViewer.java | 15 ++- .../ctrl/impl/GCModelSeriesLoaderImpl.java | 2 +- .../perf/gcviewer/imp/DataReaderFacade.java | 5 +- .../tagtraum/perf/gcviewer/model/GCModel.java | 20 ++++ .../perf/gcviewer/view/ModelChartImpl.java | 94 +++++++------------ .../gcviewer/view/model/GCResourceGroup.java | 19 +++- .../tagtraum/perf/gcviewer/GCViewerTest.java | 80 ++++++++++++++++ .../gcviewer/imp/TestDataReaderFacade.java | 28 +++++- .../perf/gcviewer/model/TestGCModel.java | 33 +++++++ .../view/model/TestGCResourceGroup.java | 12 +++ 10 files changed, 238 insertions(+), 70 deletions(-) create mode 100644 src/test/java/com/tagtraum/perf/gcviewer/GCViewerTest.java diff --git a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java index a59f5b8f..50307a92 100755 --- a/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/GCViewer.java @@ -26,13 +26,24 @@ public class GCViewer { private static final int EXIT_OK = 0; private static final int EXIT_EXPORT_FAILED = -1; private static final int EXIT_ARGS_PARSE_FAILED = -2; + private GCViewerGuiController gcViewerGuiController; + private GCViewerArgsParser gcViewerArgsParser; + + public GCViewer() { + this(new GCViewerGuiController(), new GCViewerArgsParser()); + } + + public GCViewer(GCViewerGuiController gcViewerGuiController, GCViewerArgsParser gcViewerArgsParser) { + this.gcViewerGuiController = gcViewerGuiController; + this.gcViewerArgsParser = gcViewerArgsParser; + } public static void main(final String[] args) throws InvocationTargetException, InterruptedException { new GCViewer().doMain(args); } public void doMain(String[] args) throws InvocationTargetException, InterruptedException { - GCViewerArgsParser argsParser = new GCViewerArgsParser(); + GCViewerArgsParser argsParser = gcViewerArgsParser; try { argsParser.parseArguments(args); } @@ -64,7 +75,7 @@ else if (argsParser.getArgumentCount() >= 2) { } } else { - new GCViewerGuiController().startGui(argsParser.getArgumentCount() == 1 ? argsParser.getGcResource() : null); + gcViewerGuiController.startGui(argsParser.getArgumentCount() == 1 ? argsParser.getGcResource() : null); } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java index 0bb70c81..167cee1d 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/ctrl/impl/GCModelSeriesLoaderImpl.java @@ -28,6 +28,6 @@ public GCResource getGcResource() { @Override protected GCModel loadGcModel() throws DataReaderException { - return dataReaderFacade.loadModelFromSeries(gcResourceSeries); + return dataReaderFacade.loadModel(gcResourceSeries); } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java index 40726fd3..5061643c 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderFacade.java @@ -52,6 +52,9 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { if (gcResource == null) { throw new NullPointerException("gcResource must never be null"); } + if (gcResource instanceof GcResourceSeries) { + return loadModelFromSeries((GcResourceSeries) gcResource); + } if (!(gcResource instanceof GcResourceFile)) throw new UnsupportedOperationException("Only supported for files!"); @@ -84,7 +87,7 @@ public GCModel loadModel(GCResource gcResource) throws DataReaderException { * @return a {@link GCModel} containing all events found in the given {@link GCResource}s that were readable * @throws DataReaderException */ - public GCModel loadModelFromSeries(GcResourceSeries gcResource) throws DataReaderException { + protected GCModel loadModelFromSeries(GcResourceSeries gcResource) throws DataReaderException { GcSeriesLoader seriesLoader = new GcSeriesLoader(this); return seriesLoader.load(gcResource); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java index b94df491..255a90ed 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/model/GCModel.java @@ -16,6 +16,8 @@ import java.nio.file.Files; import java.nio.file.attribute.BasicFileAttributes; import java.time.Duration; +import java.time.Instant; +import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.util.*; @@ -989,6 +991,24 @@ public Optional getFirstTimeStamp() { return Optional.empty(); } + /** + * Best effort calculation of this {@link GCModel}s start date based on the available information + * + * @return the most probable start date of this {@link GCModel} + */ + public ZonedDateTime getStartDate() { + ZonedDateTime suggestedStartDate = ZonedDateTime.ofInstant(Instant.ofEpochMilli(getLastModified()), ZoneId.systemDefault()); + if (hasDateStamp()) { + suggestedStartDate = getFirstDateStamp(); + } + else if (hasCorrectTimestamp()) { + double runningTimeInSeconds = getRunningTime(); + long runningTimeInMillis = (long) (runningTimeInSeconds * 1000d); + suggestedStartDate = suggestedStartDate.minus(runningTimeInMillis, ChronoUnit.MILLIS); + } + return suggestedStartDate; + } + public String toString() { return "GCModel[size=" + size() + "]: " + allEvents.toString(); } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/ModelChartImpl.java b/src/main/java/com/tagtraum/perf/gcviewer/view/ModelChartImpl.java index 83db7e57..58f86266 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/ModelChartImpl.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/ModelChartImpl.java @@ -1,14 +1,16 @@ package com.tagtraum.perf.gcviewer.view; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Rectangle; +import com.tagtraum.perf.gcviewer.model.GCModel; +import com.tagtraum.perf.gcviewer.util.TimeFormat; +import com.tagtraum.perf.gcviewer.view.model.GCPreferences; +import com.tagtraum.perf.gcviewer.view.model.PropertyChangeEventConsts; +import com.tagtraum.perf.gcviewer.view.renderer.*; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.SwingPropertyChangeSupport; +import java.awt.*; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.MouseAdapter; @@ -18,36 +20,10 @@ import java.text.DateFormat; import java.text.Format; import java.text.NumberFormat; +import java.time.ZonedDateTime; import java.util.Date; import java.util.logging.Logger; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollBar; -import javax.swing.JScrollPane; -import javax.swing.JViewport; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.SwingPropertyChangeSupport; - -import com.tagtraum.perf.gcviewer.model.GCModel; -import com.tagtraum.perf.gcviewer.util.TimeFormat; -import com.tagtraum.perf.gcviewer.view.model.GCPreferences; -import com.tagtraum.perf.gcviewer.view.model.PropertyChangeEventConsts; -import com.tagtraum.perf.gcviewer.view.renderer.ConcurrentGcBegionEndRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.FullGCLineRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.GCRectanglesRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.GCTimesRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.IncLineRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.InitialMarkLevelRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.PolygonChartRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalHeapRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalTenuredRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.TotalYoungRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedHeapRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedTenuredRenderer; -import com.tagtraum.perf.gcviewer.view.renderer.UsedYoungRenderer; - /** * Graphical chart of the gc file. It contains the chart and all rulers surrounding it but not * the model details on the right side. @@ -59,7 +35,7 @@ public class ModelChartImpl extends JScrollPane implements ModelChart, ChangeListener, PropertyChangeListener { private static final Logger LOGGER = Logger.getLogger(ModelChartImpl.class.getName()); - + private GCModel model; private Chart chart; private JScrollBar horizontalScrollBar; @@ -182,7 +158,7 @@ public void componentHidden(ComponentEvent e) {} timeOffsetPanel = new TimeOffsetPanel(timestampRulerPopup); timestampRulerPopup.add(timeOffsetPanel); timeOffsetPanel.setCheckboxSelected(timestampRuler.getOffset() != 0); - + this.timestampRuler.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e) { maybePopup(e); @@ -199,14 +175,8 @@ private void maybePopup(MouseEvent e) { timeOffsetPanel.setCheckboxSelected(true); } else { - long suggestedStartDate = model.getLastModified(); - if (model.hasDateStamp()) { - suggestedStartDate = model.getFirstDateStamp().toInstant().toEpochMilli(); - } - else if (model.hasCorrectTimestamp()) { - suggestedStartDate -= (long)(model.getRunningTime() * 1000.0d); - } - timeOffsetPanel.setDate(new Date(suggestedStartDate)); + ZonedDateTime suggestedStartDate = model.getStartDate(); + timeOffsetPanel.setDate(Date.from(suggestedStartDate.toInstant())); timeOffsetPanel.setCheckboxSelected(false); } timestampRulerPopup.show(e.getComponent(), e.getX(), e.getY()); @@ -219,16 +189,16 @@ else if (model.hasCorrectTimestamp()) { public void addTimeOffsetChangeListener(PropertyChangeListener listener) { this.timeOffsetPanel.addPropertyChangeListener( - PropertyChangeEventConsts.TIMEOFFSETPANEL_STATE_CHANGED, + PropertyChangeEventConsts.TIMEOFFSETPANEL_STATE_CHANGED, listener); } - + public void removeTimeOffsetChangeListener(PropertyChangeListener listener) { this.timeOffsetPanel.removePropertyChangeListener( - PropertyChangeEventConsts.TIMEOFFSETPANEL_STATE_CHANGED, + PropertyChangeEventConsts.TIMEOFFSETPANEL_STATE_CHANGED, listener); } - + public void invalidate() { super.invalidate(); chart.invalidate(); @@ -405,7 +375,7 @@ public void setShowDateStamp(boolean showDateStamp) { timestampRuler.revalidate(); timestampRuler.repaint(); } - + @Override public boolean isShowDateStamp(){ return timestampRuler.getOffset() > 0; @@ -541,7 +511,7 @@ private class Ruler extends JPanel { private String unitName; private int minHalfDistance; private double offset; - + private SwingPropertyChangeSupport propertyChangeSupport; public Ruler(boolean vertical, double minUnit, double maxUnit, String unitName) { @@ -555,18 +525,18 @@ public Ruler(boolean vertical, double minUnit, double maxUnit, String unitName, setMinUnit(minUnit); setMaxUnit(maxUnit); font = new Font("sans-serif", Font.PLAIN, 10); - + propertyChangeSupport = new SwingPropertyChangeSupport(this, true); } public void addPropertyChangeListener(PropertyChangeListener listener) { this.propertyChangeSupport.addPropertyChangeListener(listener); } - + public void removePropertyChangeListener(PropertyChangeListener listener) { this.propertyChangeSupport.removePropertyChangeListener(listener); } - + public void setSize(int width, int height) { super.setSize(width, height); configureFormatter(); @@ -579,7 +549,7 @@ public Dimension getPreferredSize() { Dimension bestSize = null; if (isVertical()) { bestSize = new Dimension(minWidth, getHeight()); - } + } else { bestSize = new Dimension((int) (runningTime * getScaleFactor()), fm.getHeight()); minHalfDistance = minWidth; @@ -691,7 +661,7 @@ private double getDateLineDistance() { double oneHourDistance = lineDistance; while (lineDistance < 20) lineDistance += oneHourDistance; } - } + } else { if (lineDistance < minHalfDistance * 2) lineDistance *= 10.0d; // 10sec if (lineDistance < minHalfDistance * 2) lineDistance *= 2.0d; // 20sec @@ -715,7 +685,7 @@ private double getNumberLineDistance() { double lineDistance = getPixelsPerUnit() * Math.pow(10, Math.ceil(-log10PixelPerUnit) + 1); if (isVertical()) { while (lineDistance < 20) lineDistance *= 10.0d; - } + } else { while (lineDistance < minHalfDistance * 2) lineDistance *= 10.0d; } @@ -723,7 +693,7 @@ private double getNumberLineDistance() { } private double getPixelsPerUnit() { - return isVertical() + return isVertical() ? getHeight() / (maxUnit - minUnit) : (runningTime * getScaleFactor() / (maxUnit - minUnit)); } @@ -744,7 +714,7 @@ public void configureFormatter() { if (digits < 1) { ((NumberFormat)formatter).setMaximumFractionDigits((int) Math.abs(digits) + 2); ((NumberFormat)formatter).setMinimumFractionDigits((int) Math.abs(digits) + 2); - } + } else { ((NumberFormat)formatter).setMaximumFractionDigits(0); ((NumberFormat)formatter).setMinimumFractionDigits(0); @@ -787,14 +757,14 @@ public void propertyChange(PropertyChangeEvent evt) { // and propagates the change outside firing its own event. // Like this it is possible for the menu and the other ModelChartImpls inside one // GCDocument to stay in sync. - + if (PropertyChangeEventConsts.RULER_OFFSET_CHANGED.equals(evt.getPropertyName())) { // dateStampShown is true, if some offset is present (0 offset = only time shown) boolean dateStampShown = ((Double)evt.getNewValue()).doubleValue() > 0.0001; firePropertyChange( PropertyChangeEventConsts.MODELCHART_TIMESTAMP_RULER_FORMAT_CHANGED, !dateStampShown, - dateStampShown); + dateStampShown); } } diff --git a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java index d60f8115..10ccca71 100644 --- a/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java +++ b/src/main/java/com/tagtraum/perf/gcviewer/view/model/GCResourceGroup.java @@ -138,8 +138,9 @@ public String getUrlGroupString() { } /** - * Get short version of resource names (only file name without path), if more than one - * resource is in this group. + * Get short version of resource names.
+ * If more than one resource is in this group, returns only file name without path. + * {@link GcResourceSeries} are abbreviated by showing the name of the first file and how many files are following. * * @return get short group name (only file name without path), if there is more than one * resource @@ -148,6 +149,7 @@ public String getGroupStringShort() { if (gcResourceList.size() > 1) { StringBuilder sb = new StringBuilder(); for (String resourceName : gcResourceList) { + resourceName = shortenGroupStringForSeries(resourceName); // test for "/" and "\\" because in Windows you have a "/" in a http url // but "\\" in file strings int lastIndexOfPathSeparator = resourceName.lastIndexOf("/"); @@ -159,10 +161,21 @@ public String getGroupStringShort() { return sb.toString(); } else { - return gcResourceList.get(0); + String resourceName = gcResourceList.get(0); + return shortenGroupStringForSeries(resourceName); } } + private String shortenGroupStringForSeries(String resourceName) { + String[] splitBySeriesSeparator = resourceName.split(SERIES_SEPARATOR); + if(splitBySeriesSeparator.length > 1) + { + // Series: Shorten description by showing first entry only + number of remaining files + resourceName = splitBySeriesSeparator[0] + " (series, " + (splitBySeriesSeparator.length -1) +" more files)"; + } + return resourceName; + } + @Override public boolean equals(Object obj) { if (this == obj) diff --git a/src/test/java/com/tagtraum/perf/gcviewer/GCViewerTest.java b/src/test/java/com/tagtraum/perf/gcviewer/GCViewerTest.java new file mode 100644 index 00000000..3209d8ea --- /dev/null +++ b/src/test/java/com/tagtraum/perf/gcviewer/GCViewerTest.java @@ -0,0 +1,80 @@ +package com.tagtraum.perf.gcviewer; + +import com.tagtraum.perf.gcviewer.ctrl.impl.GCViewerGuiController; +import com.tagtraum.perf.gcviewer.model.GCResource; +import com.tagtraum.perf.gcviewer.model.GcResourceFile; +import com.tagtraum.perf.gcviewer.model.GcResourceSeries; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.isEmptyString; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.*; + +/** + * @author martin.geldmacher + */ +public class GCViewerTest { + + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); + private PrintStream oldOut; + private PrintStream oldErr; + + @Before + public void replaceStreams() { + oldOut = System.out; + oldErr = System.err; + System.setOut(new PrintStream(outContent)); + System.setErr(new PrintStream(errContent)); + } + + @After + public void revertToOriginalStreams() { + System.setOut(oldOut); + System.setErr(oldErr); + } + + @Test + public void singleArgumentOpensGui() throws Exception { + GCViewerGuiController controller = mock(GCViewerGuiController.class); + GCViewer gcViewer = new GCViewer(controller, new GCViewerArgsParser()); + + String[] args = {"some_gc.log"}; + gcViewer.doMain(args); + verify(controller).startGui(new GcResourceFile("some_gc.log")); + assertThat(outContent.toString(), isEmptyString()); + assertThat(errContent.toString(), isEmptyString()); + } + + @Test + public void singleArgumentWithSeriesOpensGui() throws Exception { + GCViewerGuiController controller = mock(GCViewerGuiController.class); + GCViewer gcViewer = new GCViewer(controller, new GCViewerArgsParser()); + + String[] args = {"some_gc.log.0;some_gc.log.1;some_gc.log.2"}; + gcViewer.doMain(args); + verify(controller).startGui(new GcResourceSeries(Arrays.asList(new GcResourceFile("some_gc.log.0"), new GcResourceFile("some_gc.log.1"), new GcResourceFile("some_gc.log.2")))); + assertThat(outContent.toString(), isEmptyString()); + assertThat(errContent.toString(), isEmptyString()); + } + + @Test + public void moreThan3ArgumentsPrintsUsage() throws Exception { + GCViewerGuiController controller = mock(GCViewerGuiController.class); + GCViewer gcViewer = new GCViewer(controller, new GCViewerArgsParser()); + + String[] args = {"argument1", "argument2", "argument3", "argument4"}; + gcViewer.doMain(args); + verify(controller, never()).startGui(any(GCResource.class)); + assertThat(outContent.toString(), containsString("Welcome to GCViewer with cmdline")); + assertThat(errContent.toString(), isEmptyString()); + } +} diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java index 7d7cd486..e5dc4625 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderFacade.java @@ -110,7 +110,7 @@ public void loadModelFileDoesntExists() throws Exception { } @Test - public void testLoadModelFromSeries() throws IOException, DataReaderException { + public void testLoadModel_forSeries() throws IOException, DataReaderException { GCResource file1 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath()); GCResource file2 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath()); GCResource file3 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath()); @@ -134,4 +134,30 @@ public void testLoadModelFromSeries() throws IOException, DataReaderException { GCModel result = dataReaderFacade.loadModelFromSeries(series); assertThat(result.toString(), is(expectedModel.toString())); } + + @Test + public void testLoadModelFromSeries() throws IOException, DataReaderException { + GCResource file1 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part1.txt").getPath()); + GCResource file2 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part2.txt").getPath()); + GCResource file3 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part3.txt").getPath()); + GCResource file4 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part4.txt").getPath()); + GCResource file5 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part5.txt").getPath()); + GCResource file6 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part6.txt").getPath()); + GCResource file7 = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-Part7.txt").getPath()); + GCResource expectedResult = new GcResourceFile(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_8_0Series-ManuallyMerged.txt").getPath()); + GCModel expectedModel = dataReaderFacade.loadModel(expectedResult); + + List resources = new ArrayList<>(); + resources.add(file4); + resources.add(file3); + resources.add(file6); + resources.add(file1); + resources.add(file7); + resources.add(file2); + resources.add(file5); + GcResourceSeries series = new GcResourceSeries(resources); + + GCModel result = dataReaderFacade.loadModel(series); + assertThat(result.toString(), is(expectedModel.toString())); + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java index e0b1ed2b..0f716df7 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/model/TestGCModel.java @@ -8,6 +8,11 @@ import org.junit.Test; import java.io.IOException; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.temporal.ChronoUnit; import java.util.concurrent.ExecutionException; import static org.hamcrest.Matchers.closeTo; @@ -50,4 +55,32 @@ public void testEquals_ForIdenticalModels() throws IOException, ExecutionExcepti public void testEquals_ForEmptyModels() { assertThat(new GCModel(), is(new GCModel())); } + + @Test + public void testGetStartDate_WhenNeitherDateNorTimeStampsAreAvailable() throws Exception { + GCModel model = new GCModel(); + model.setURL(UnittestHelper.getResource(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); + + assertThat(model.getStartDate(), is(ZonedDateTime.ofInstant(Instant.ofEpochMilli(model.getLastModified()), ZoneId.systemDefault()))); + } + + @Test + public void testGetStartDate_WhenDateStampsAreAvailable() throws Exception { + DataReaderFacade dataReader = new DataReaderFacade(); + GCModel model = dataReader.loadModel(new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMSAdaptiveSizePolicy.txt"))); + + ZonedDateTime expectedTime = ZonedDateTime.of(2012, 4, 18, 14, 23, 59, 890_000_000, ZoneId.ofOffset("", ZoneOffset.ofHours(2))); + assertThat(model.getStartDate(), is(expectedTime)); + } + + @Test + public void testGetStartDate_WhenNoDateButTimestampsAreAvailable() throws Exception { + DataReaderFacade dataReader = new DataReaderFacade(); + GcResourceFile gcResource = new GcResourceFile(UnittestHelper.getResourceAsString(UnittestHelper.FOLDER_OPENJDK, "SampleSun1_6_0CMS.txt")); + GCModel model = dataReader.loadModel(gcResource); + + ZonedDateTime expectedTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(model.getLastModified()), ZoneId.systemDefault()); + expectedTime = expectedTime.minus(1381, ChronoUnit.MILLIS);// 1,381s (diff between last and first timestamp + assertThat(model.getStartDate(), is(expectedTime)); + } } diff --git a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java index 3c1e1ce8..0b7ce0f8 100644 --- a/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java +++ b/src/test/java/com/tagtraum/perf/gcviewer/view/model/TestGCResourceGroup.java @@ -114,4 +114,16 @@ public void getGroupStringShort1Element() { assertThat("should start with", gcResourceGroup.getGroupStringShort(), startsWith("file:/")); assertThat("should end with", gcResourceGroup.getGroupStringShort(), endsWith("/temp/test/gc-log-file.log")); } + + @Test + public void getGroupStringShort_Series() { + GCResourceGroup gcResourceGroup = new GCResourceGroup("file:/log1>file:/log2>file:/log3>file:/log4"); + assertThat(gcResourceGroup.getGroupStringShort(), is("file:/log1 (series, 3 more files)")); + } + + @Test + public void getGroupStringShort_SeveralSeries() { + GCResourceGroup gcResourceGroup = new GCResourceGroup("file:/log1>file:/log2>file:/log3>file:/log4;file:/log5>file:/log6>file:/log7"); + assertThat(gcResourceGroup.getGroupStringShort(), is("log1 (series, 3 more files);log5 (series, 2 more files);")); + } }