diff --git a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderGo.java b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderGo.java
index a21f1a25..9956eb6e 100644
--- a/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderGo.java
+++ b/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderGo.java
@@ -38,7 +38,14 @@ public class DataReaderGo extends AbstractDataReader {
             + "(\\d+)->"
             + "(\\d+) MB, "
             + "(\\d+) MB goal, "
-            + "(\\d+) P");
+            // Go 1.19
+            + "(?:"
+            + "(\\d+) MB stacks, "
+            + "(\\d+) MB globals, "
+            + ")?"
+            + "(\\d+) P"
+            // Go 1.19
+            + "(?: \\(forced\\))?");
 
     public DataReaderGo(GCResource gcResource, InputStream in) throws UnsupportedEncodingException {
         super(gcResource, in);
diff --git a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderGo.java b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderGo.java
index d16d9713..12904f84 100644
--- a/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderGo.java
+++ b/src/test/java/com/tagtraum/perf/gcviewer/imp/TestDataReaderGo.java
@@ -29,25 +29,29 @@ public void test() throws IOException {
                 + "gc starting...\n" // Such a line is not produced by the Go GC; it is just for testing
                 + "gc 1 @0.058s 0%: 0+1.9+0 ms clock, 0+0.94/1.9/2.9+0 ms cpu, 4->5->1 MB, 5 MB goal, 4 P\n"
                 + "a line unrelated to GC logging\n"
+                // Number too large.
                 + "gc 2 @0.073s 3%: 68+0.36+0.51 ms clock, 205+0/16/89+1.5 ms cpu, 11111111111111111111111111111111111->84->42 MB, 86 MB goal, 3 P\n"
-                + "gc 58 @17.837s 0%: 0.48+17+0 ms clock, 1.9+9.3/7.9/15+0 ms cpu, 30->30->15 MB, 31 MB goal, 4 P\n";
+                + "gc 58 @17.837s 0%: 0.48+17+0 ms clock, 1.9+9.3/7.9/15+0 ms cpu, 30->30->15 MB, 31 MB goal, 4 P\n"
+                // Go 1.19
+                + "gc 19 @5.294s 0%: 0+11+0 ms clock, 0+11/13/1.5+0 ms cpu, 18->19->11 MB, 19 MB goal, 0 MB stacks, 0 MB globals, 8 P\n"
+                + "gc 38 @661.724s 3%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 48->48->0 MB, 97 MB goal, 0 MB stacks, 0 MB globals, 8 P (forced)\n";
         ByteArrayInputStream in = new ByteArrayInputStream(gcLog.getBytes("US-ASCII"));
         DataReader reader = new DataReaderGo(gcResource, in);
         GCModel model = reader.read();
 
         assertThat("gc 2 -> warning", handler.getCount(), is(1));
-        assertThat("size", model.size(), is(2));
+        assertThat("size", model.size(), is(4));
 
         AbstractGCEvent<?> event1 = model.get(0);
-        assertThat("timestamp", event1.getTimestamp(), closeTo(0.058, 0.0001));
-        assertThat("pause", event1.getPause(), closeTo(0 + 0, 0.1));
+        assertThat("timestamp", event1.getTimestamp(), closeTo(0.058, 0.0));
+        assertThat("pause", event1.getPause(), closeTo(0.0, 0.0));
         assertThat("preused", event1.getPreUsed(), is(4096));
         assertThat("postused", event1.getPostUsed(), is(1024));
         assertThat("heap", event1.getTotal(), is(5120));
     }
 
     @Test
-    public void exampleLog() throws IOException {
+    public void exampleLogGo19() throws IOException {
         TestLogHandler handler = new TestLogHandler();
         handler.setLevel(Level.WARNING);
         GCResource gcResource = new GcResourceFile("go1.9.txt");
@@ -60,4 +64,19 @@ public void exampleLog() throws IOException {
         assertThat("warnings", handler.getCount(), is(0));
         assertThat("size", model.size(), is(635));
     }
+
+    @Test
+    public void exampleLogGo119() throws IOException {
+        TestLogHandler handler = new TestLogHandler();
+        handler.setLevel(Level.WARNING);
+        GCResource gcResource = new GcResourceFile("go1.19.txt");
+        gcResource.getLogger().addHandler(handler);
+
+        InputStream in = UnittestHelper.getResourceAsStream(UnittestHelper.FOLDER.GO, gcResource.getResourceName());
+        DataReader reader = new DataReaderGo(gcResource, in);
+        GCModel model = reader.read();
+
+        assertThat("warnings", handler.getCount(), is(0));
+        assertThat("size", model.size(), is(38));
+    }
 }
diff --git a/src/test/resources/go/go1.19.txt b/src/test/resources/go/go1.19.txt
new file mode 100644
index 00000000..55a4335d
--- /dev/null
+++ b/src/test/resources/go/go1.19.txt
@@ -0,0 +1,38 @@
+gc 1 @0.077s 0%: 0+1.1+0 ms clock, 0+0.53/1.1/0.53+0 ms cpu, 3->4->1 MB, 4 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 2 @0.102s 0%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 3->3->2 MB, 4 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 3 @0.112s 0%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 3->4->2 MB, 4 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 4 @0.113s 1%: 0+9.2+0 ms clock, 0+0/17/44+0 ms cpu, 5->5->4 MB, 5 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 5 @0.133s 1%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 8->8->5 MB, 8 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 6 @0.163s 1%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 10->10->5 MB, 10 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 7 @0.183s 2%: 0+10+0 ms clock, 0+0.061/20/40+0 ms cpu, 11->11->6 MB, 11 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 8 @0.209s 2%: 0+5.2+0 ms clock, 0+0/5.5/5.8+0 ms cpu, 11->12->7 MB, 12 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 9 @0.244s 2%: 0+4.9+0 ms clock, 0+0.53/8.2/8.2+0 ms cpu, 13->14->7 MB, 14 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 10 @0.266s 3%: 1.0+7.7+0 ms clock, 8.3+3.9/8.5/0+0 ms cpu, 14->14->9 MB, 14 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 11 @0.311s 3%: 0+10+0 ms clock, 0+0/13/10+0 ms cpu, 19->19->8 MB, 20 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 12 @0.349s 3%: 0+2.5+0 ms clock, 0+0/2.5/2.5+0 ms cpu, 16->17->9 MB, 17 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 13 @0.381s 3%: 0+10+0 ms clock, 0+0/20/10+0 ms cpu, 16->18->10 MB, 18 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 14 @0.434s 3%: 0+12+0 ms clock, 0+0/24/24+0 ms cpu, 19->20->10 MB, 21 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 15 @2.492s 0%: 0+6.9+0 ms clock, 0+0/8.1/12+0 ms cpu, 21->21->8 MB, 22 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 16 @5.218s 0%: 0.54+12+0.50 ms clock, 4.3+0.50/14/3.0+4.0 ms cpu, 16->16->8 MB, 16 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 17 @5.244s 0%: 0.51+13+0 ms clock, 4.1+3.2/11/1.5+0 ms cpu, 17->18->10 MB, 18 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 18 @5.274s 0%: 0+12+0 ms clock, 0+0/2.0/10+0 ms cpu, 20->21->9 MB, 21 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 19 @5.294s 0%: 0+11+0 ms clock, 0+11/13/1.5+0 ms cpu, 18->19->11 MB, 19 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 20 @5.317s 0%: 0+17+0 ms clock, 0+17/26/36+0 ms cpu, 21->23->11 MB, 23 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 21 @5.357s 0%: 0+14+0 ms clock, 0+0/28/14+0 ms cpu, 19->22->12 MB, 23 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 22 @5.388s 0%: 0+17+0 ms clock, 0+0/29/2.0+0 ms cpu, 23->24->9 MB, 24 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 23 @5.502s 0%: 0+11+4.3 ms clock, 0+0/14/8.6+34 ms cpu, 17->18->12 MB, 19 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 24 @5.648s 0%: 0+10+0 ms clock, 0+0/15/16+0 ms cpu, 22->23->12 MB, 24 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 25 @5.813s 0%: 0+10+0 ms clock, 0+0/13/20+0 ms cpu, 23->24->14 MB, 25 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 26 @6.012s 0%: 0+18+0 ms clock, 0+0/30/30+0 ms cpu, 25->26->13 MB, 28 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 27 @6.133s 0%: 0+12+0 ms clock, 0+1.1/19/42+0 ms cpu, 26->28->15 MB, 28 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 28 @6.672s 0%: 0+3.0+0 ms clock, 0+0/3.0/6.0+0 ms cpu, 26->27->14 MB, 31 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 29 @6.727s 0%: 0+7.0+0 ms clock, 0+0/3.0/5.5+0 ms cpu, 24->26->13 MB, 29 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 30 @6.776s 0%: 0+8.1+0 ms clock, 0+0/15/6.3+0 ms cpu, 22->25->15 MB, 26 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 31 @6.856s 0%: 0+9.5+0 ms clock, 0+0/0/0+0 ms cpu, 29->30->13 MB, 32 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 32 @6.923s 0%: 0+5.7+0 ms clock, 0+0/9.8/10+0 ms cpu, 26->27->13 MB, 27 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 33 @7.003s 0%: 0+10+0 ms clock, 0+0.50/9.1/4.1+0 ms cpu, 24->26->12 MB, 28 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 34 @7.090s 0%: 0+5.5+0 ms clock, 0+0/11/5.5+0 ms cpu, 23->25->14 MB, 25 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 35 @660.868s 3%: 0+20+0 ms clock, 0+0/40/20+0 ms cpu, 131->137->67 MB, 143 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 36 @660.975s 3%: 0+20+0 ms clock, 0+0/40/20+0 ms cpu, 126->126->61 MB, 135 MB goal, 0 MB stacks, 0 MB globals, 8 P
+gc 37 @661.543s 3%: 0+27+0 ms clock, 0+0/27/8.0+0 ms cpu, 76->76->48 MB, 122 MB goal, 0 MB stacks, 0 MB globals, 8 P (forced)
+gc 38 @661.724s 3%: 0+0+0 ms clock, 0+0/0/0+0 ms cpu, 48->48->0 MB, 97 MB goal, 0 MB stacks, 0 MB globals, 8 P (forced)