From 432d41cdd31643e473b39f685c53102846e16d24 Mon Sep 17 00:00:00 2001 From: youngreal Date: Wed, 22 Jun 2022 22:22:54 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat=20:=20=EB=AF=B8=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +- gradlew.bat | 4 +- src/main/java/Car.java | 37 +++++++++++++++ src/main/java/CarLocation.java | 16 +++++++ src/main/java/CarStorage.java | 15 +++++++ src/main/java/Game.java | 72 ++++++++++++++++++++++++++++++ src/main/java/Main.java | 6 +++ src/test/java/CarLocationTest.java | 23 ++++++++++ src/test/java/CarTest.java | 38 ++++++++++++++++ 9 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 src/main/java/Car.java create mode 100644 src/main/java/CarLocation.java create mode 100644 src/main/java/CarStorage.java create mode 100644 src/main/java/Game.java create mode 100644 src/main/java/Main.java create mode 100644 src/test/java/CarLocationTest.java create mode 100644 src/test/java/CarTest.java diff --git a/build.gradle b/build.gradle index 8172fb73f..1cdbe77ed 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'eclipse' group = 'camp.nextstep' version = '1.0.0' -sourceCompatibility = '1.8' +sourceCompatibility = "11" repositories { mavenCentral() @@ -17,3 +17,4 @@ dependencies { test { useJUnitPlatform() } +targetCompatibility = JavaVersion.VERSION_11 diff --git a/gradlew.bat b/gradlew.bat index ac1b06f93..0f4372663 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -46,7 +46,7 @@ echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo carLocation of your Java installation. goto fail @@ -60,7 +60,7 @@ echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo carLocation of your Java installation. goto fail diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 000000000..f9174fafe --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,37 @@ +import java.util.regex.Pattern; + +public class Car { + private static final Pattern CAR_NAME_PATTERN = Pattern.compile("^[a-zA-Z]*$"); + private static final int CAR_MAX_LENGTH = 5; + private final String carName; + private final int randomNum; + + public Car(String carName) { + if (carName.length() > CAR_MAX_LENGTH) { + throw new IllegalArgumentException("자동차 이름의 길이는 5자리를 넘을수 없다"); + } + + if (isNotMatchingCarNamePattern(carName)) { + throw new IllegalArgumentException("자동차 이름은 영문만 올수있습니다"); + } + + this.carName = carName; + this.randomNum = generateRandomNumber(); + } + + private int generateRandomNumber() { + return (int) (Math.random() * 10); + } + + private boolean isNotMatchingCarNamePattern(String carName) { + return !CAR_NAME_PATTERN.matcher(carName).matches(); + } + + public int getRandomNum() { + return randomNum; + } + + public String getCarName() { + return carName; + } +} diff --git a/src/main/java/CarLocation.java b/src/main/java/CarLocation.java new file mode 100644 index 000000000..037419c0b --- /dev/null +++ b/src/main/java/CarLocation.java @@ -0,0 +1,16 @@ + +public class CarLocation { + private static final int ADVANCE_RANDOM_NUMBER = 4; + private final StringBuffer stringLocation = new StringBuffer("-"); + + public StringBuffer getCarLocation(int randomNumber) { + if (randomNumber >= ADVANCE_RANDOM_NUMBER) { + this.stringLocation.append("-"); + } + return this.stringLocation; + } + + public StringBuffer getStringLocation() { + return this.stringLocation; + } +} diff --git a/src/main/java/CarStorage.java b/src/main/java/CarStorage.java new file mode 100644 index 000000000..b48b1404b --- /dev/null +++ b/src/main/java/CarStorage.java @@ -0,0 +1,15 @@ +import java.util.Collections; +import java.util.List; + +public class CarStorage { + + private final List cars; + + public CarStorage(List cars) { + this.cars = cars; + } + + public List getCars() { + return Collections.unmodifiableList(cars); + } +} diff --git a/src/main/java/Game.java b/src/main/java/Game.java new file mode 100644 index 000000000..9e7be3f57 --- /dev/null +++ b/src/main/java/Game.java @@ -0,0 +1,72 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class Game { + + private final Scanner scanner = new Scanner(System.in); + private final List cars = new ArrayList<>(); + private final List carLocationArrayList = new ArrayList<>(); + private CarStorage carStorage; + private List winners = new ArrayList<>(); + + + public void gameStart() { + String[] split = getCarNames(); + int gameCount = getGameCount(); + int tmp = gameCount; + int max = 0; + + while (gameCount > 0) { + carStorage = inputCars(split); // 자동차 3개를 입력받은 이름을 가지고 생성해서 일급컬렉션에 저장한다 + for (int loopCount = 0; loopCount < split.length; loopCount++) { + if (gameCount == tmp) { + CarLocation carLocation = new CarLocation(); + carLocationArrayList.add(carLocation); + System.out.println(carStorage.getCars().get(loopCount).getCarName() + " : " + carLocationArrayList.get(0).getStringLocation()); + } else { + System.out.println(carStorage.getCars().get(loopCount).getCarName() + " : " + carLocationArrayList.get(loopCount).getCarLocation(getRandomNumber(loopCount)) ); + } + + } + for (int i = 0; i < split.length; i++) { + if (max < carLocationArrayList.get(i).getStringLocation().length()) { + max = carLocationArrayList.get(i).getStringLocation().length(); + } + } + + cars.clear(); + gameCount--; + } + + for (int i = 0; i < split.length; i++) { + if (carLocationArrayList.get(i).getStringLocation().length() == max) { + System.out.printf("%s",carStorage.getCars().get(i).getCarName()+ ", "); + } + } + System.out.print("가 최종 우승했습니다"); + } + + private int getRandomNumber(int i) { + return carStorage.getCars().get(i).getRandomNum(); + } + + private int getGameCount() { + System.out.println("시도할 회수는 몇회인가요?"); + return scanner.nextInt(); + } + + private String[] getCarNames() { + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표를 기준으로 구분)"); + String line = scanner.nextLine(); + return line.split(","); + } + + private CarStorage inputCars(String[] split) { + for (int i = 0; i < split.length; i++) { + Car car = new Car(split[i]); + cars.add(car); + } + return new CarStorage(cars); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 000000000..784b14342 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,6 @@ +public class Main { + public static void main(String[] args) { + Game game = new Game(); + game.gameStart(); + } +} diff --git a/src/test/java/CarLocationTest.java b/src/test/java/CarLocationTest.java new file mode 100644 index 000000000..b8bfebbdf --- /dev/null +++ b/src/test/java/CarLocationTest.java @@ -0,0 +1,23 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class CarLocationTest { + + @Test + @DisplayName("랜덤값이 4이상일때 -가 하나 추가된다 : --출력") + void location_MoreThan_2_Then_AddStringBuffer() { + CarLocation carLocation = new CarLocation(); + StringBuffer stringCarLocation = carLocation.getCarLocation(4); + assertEquals("--", stringCarLocation.toString()); + } + + @Test + @DisplayName("랜덤값이 4미만일때는 초기값(-) 그대로를 출력한다 : -출력") + void location_MoreLess_2_Then_InitStringBuffer() { + CarLocation carLocation = new CarLocation(); + StringBuffer stringCarLocation = carLocation.getCarLocation(3); + assertEquals("-", stringCarLocation.toString()); + } +} diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java new file mode 100644 index 000000000..b6f1928cf --- /dev/null +++ b/src/test/java/CarTest.java @@ -0,0 +1,38 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CarTest { + + @Test + @DisplayName("자동차 이름은 5자를 넘을수 없음") + void carNameLength_IsExceed_Then_Exception() { + assertThrows(IllegalArgumentException.class, () -> { + inputCarName("aaaaaaaa"); + }); + } + + @Test + @DisplayName("자동차 이름은 공백이거나 null 일수 없음") + void carName_isEmptyOrNull_Then_Exception() { + assertThrows(IllegalArgumentException.class, () -> { + inputCarName(" "); + inputCarName(null); + inputCarName(""); + inputCarName("a, b, c"); + }); + } + + @Test + @DisplayName("자동차 이름엔 특수문자가 들어갈수 없음") + void carName_Include_SpecialCharacters_Then_Exception() { + assertThrows(IllegalArgumentException.class, () ->{ + inputCarName("!@#$"); + }); + } + + private void inputCarName(String carName) { + Car car = new Car(carName); + } +} \ No newline at end of file From c1bff70e3f14cae991dfa5e4fe53c5197782df6a Mon Sep 17 00:00:00 2001 From: "https://github.com/youngreal" Date: Tue, 28 Jun 2022 17:32:53 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hs_err_pid10196.log | 426 +++++++++++++++++++++ replay_pid10196.log | 354 +++++++++++++++++ src/main/java/CarLocation.java | 16 - src/main/java/CarStorage.java | 15 - src/main/java/Game.java | 72 ---- src/main/java/{ => game}/Car.java | 27 +- src/main/java/game/Game.java | 32 ++ src/main/java/{ => game}/Main.java | 2 + src/main/java/game/ResultView.java | 64 ++++ src/main/java/game/storage/CarStorage.java | 33 ++ src/main/java/game/util/Util.java | 28 ++ src/test/java/CarLocationTest.java | 11 +- src/test/java/CarTest.java | 15 +- 13 files changed, 968 insertions(+), 127 deletions(-) create mode 100644 hs_err_pid10196.log create mode 100644 replay_pid10196.log delete mode 100644 src/main/java/CarLocation.java delete mode 100644 src/main/java/CarStorage.java delete mode 100644 src/main/java/Game.java rename src/main/java/{ => game}/Car.java (56%) create mode 100644 src/main/java/game/Game.java rename src/main/java/{ => game}/Main.java (89%) create mode 100644 src/main/java/game/ResultView.java create mode 100644 src/main/java/game/storage/CarStorage.java create mode 100644 src/main/java/game/util/Util.java diff --git a/hs_err_pid10196.log b/hs_err_pid10196.log new file mode 100644 index 000000000..74f60d271 --- /dev/null +++ b/hs_err_pid10196.log @@ -0,0 +1,426 @@ +# +# There is insufficient memory for the Java Runtime Environment to continue. +# Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate +# Possible reasons: +# The system is out of physical RAM or swap space +# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap +# Possible solutions: +# Reduce memory load on the system +# Increase physical memory or swap space +# Check if swap backing store is full +# Decrease Java heap size (-Xmx/-Xms) +# Decrease number of Java threads +# Decrease Java thread stack sizes (-Xss) +# Set larger code cache with -XX:ReservedCodeCacheSize= +# JVM is running with Unscaled Compressed Oops mode in which the Java heap is +# placed in the first 4GB address space. The Java Heap base address is the +# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress +# to set the Java Heap base and to place the Java Heap above 4GB virtual address. +# This output file may be truncated or incomplete. +# +# Out of Memory Error (./open/src/hotspot/share/memory/arena.cpp:81), pid=10196, tid=19332 +# +# JRE version: Java(TM) SE Runtime Environment 18.9 (11.0.9+7) (build 11.0.9+7-LTS) +# Java VM: Java HotSpot(TM) 64-Bit Server VM 18.9 (11.0.9+7-LTS, mixed mode, tiered, compressed oops, g1 gc, windows-amd64) +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# + +--------------- S U M M A R Y ------------ + +Command Line: -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\lib\idea_rt.jar=12696:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin -Dfile.encoding=UTF-8 game.Main + +Host: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz, 8 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.1741) +Time: Mon Jun 27 21:22:03 2022 ѹα ǥؽ elapsed time: 0.210354 seconds (0d 0h 0m 0s) + +--------------- T H R E A D --------------- + +Current thread (0x000001e0b10cf000): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=19332, stack(0x0000001a4a300000,0x0000001a4a400000)] + + +Current CompileTask: +C2: 210 163 4 java.util.HashMap::putVal (300 bytes) + +Stack: [0x0000001a4a300000,0x0000001a4a400000] +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x611a3a] +V [jvm.dll+0x748aaf] +V [jvm.dll+0x74a135] +V [jvm.dll+0x74a7b3] +V [jvm.dll+0x2439f8] +V [jvm.dll+0xba65b] +V [jvm.dll+0xba9bc] +V [jvm.dll+0x5a3cc1] +V [jvm.dll+0x5a3e7b] +V [jvm.dll+0x5a872e] +V [jvm.dll+0x5a8eb5] +V [jvm.dll+0x5a7c0e] +V [jvm.dll+0x1fd337] +V [jvm.dll+0x1fc64f] +V [jvm.dll+0x17f08c] +V [jvm.dll+0x20bc54] +V [jvm.dll+0x209d2b] +V [jvm.dll+0x7103d9] +V [jvm.dll+0x709114] +V [jvm.dll+0x610cb6] +C [ucrtbase.dll+0x21bb2] +C [KERNEL32.DLL+0x17034] +C [ntdll.dll+0x52651] + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x000001e0b1ba0bc0, length=10, elements={ +0x000001e092347000, 0x000001e0b10a2000, 0x000001e0b10ab800, 0x000001e0b19b3000, +0x000001e0b10ce000, 0x000001e0b10cf000, 0x000001e0b19bc000, 0x000001e0b10d8800, +0x000001e0b1b2e000, 0x000001e0b1bce000 +} + +Java Threads: ( => current thread ) + 0x000001e092347000 JavaThread "main" [_thread_blocked, id=20580, stack(0x0000001a49800000,0x0000001a49900000)] + 0x000001e0b10a2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=18884, stack(0x0000001a49f00000,0x0000001a4a000000)] + 0x000001e0b10ab800 JavaThread "Finalizer" daemon [_thread_blocked, id=19784, stack(0x0000001a4a000000,0x0000001a4a100000)] + 0x000001e0b19b3000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=16088, stack(0x0000001a4a100000,0x0000001a4a200000)] + 0x000001e0b10ce000 JavaThread "Attach Listener" daemon [_thread_blocked, id=19692, stack(0x0000001a4a200000,0x0000001a4a300000)] +=>0x000001e0b10cf000 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=19332, stack(0x0000001a4a300000,0x0000001a4a400000)] + 0x000001e0b19bc000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=19576, stack(0x0000001a4a400000,0x0000001a4a500000)] + 0x000001e0b10d8800 JavaThread "Sweeper thread" daemon [_thread_blocked, id=9668, stack(0x0000001a4a500000,0x0000001a4a600000)] + 0x000001e0b1b2e000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=6020, stack(0x0000001a4a600000,0x0000001a4a700000)] + 0x000001e0b1bce000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=19800, stack(0x0000001a4a700000,0x0000001a4a800000)] + +Other Threads: + 0x000001e0b107e000 VMThread "VM Thread" [stack: 0x0000001a49e00000,0x0000001a49f00000] [id=20124] + 0x000001e09235d000 GCTaskThread "GC Thread#0" [stack: 0x0000001a49900000,0x0000001a49a00000] [id=15332] + 0x000001e0b1bd0800 GCTaskThread "GC Thread#1" [stack: 0x0000001a4a800000,0x0000001a4a900000] [id=15212] + 0x000001e0b1bd1800 GCTaskThread "GC Thread#2" [stack: 0x0000001a4a900000,0x0000001a4aa00000] [id=19164] + 0x000001e09238e800 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000001a49a00000,0x0000001a49b00000] [id=18924] + 0x000001e092390800 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000001a49b00000,0x0000001a49c00000] [id=10640] + 0x000001e0b1ca2800 ConcurrentGCThread "G1 Conc#1" [stack: 0x0000001a4aa00000,0x0000001a4ab00000] [id=9704] + 0x000001e092424800 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000001a49c00000,0x0000001a49d00000] [id=17572] + 0x000001e0b0ef0800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x0000001a49d00000,0x0000001a49e00000] [id=16264] + +Threads with active compile tasks: +C2 CompilerThread0 242 163 4 java.util.HashMap::putVal (300 bytes) +C1 CompilerThread0 242 185 3 java.lang.AbstractStringBuilder::append (45 bytes) +C2 CompilerThread1 242 175 4 java.lang.String::charAt (25 bytes) + +VM state:at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) +[0x000001e092342e90] Threads_lock - owner thread: 0x000001e0b107e000 +[0x000001e092342980] Heap_lock - owner thread: 0x000001e092347000 +[0x000001e092346370] MethodData_lock - owner thread: 0x000001e0b19bc000 + +Heap address: 0x0000000081400000, size: 2028 MB, Compressed Oops mode: 32-bit +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000100000000 + +Heap: + garbage-first heap total 131072K, used 913K [0x0000000081400000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 5000K, capacity 5019K, committed 5120K, reserved 1069056K + class space used 427K, capacity 438K, committed 512K, reserved 1048576K +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000081400000, 0x0000000081400000, 0x0000000081500000| 0%| F| |TAMS 0x0000000081400000, 0x0000000081400000| Untracked +| 1|0x0000000081500000, 0x0000000081500000, 0x0000000081600000| 0%| F| |TAMS 0x0000000081500000, 0x0000000081500000| Untracked +| 2|0x0000000081600000, 0x0000000081600000, 0x0000000081700000| 0%| F| |TAMS 0x0000000081600000, 0x0000000081600000| Untracked +| 3|0x0000000081700000, 0x0000000081700000, 0x0000000081800000| 0%| F| |TAMS 0x0000000081700000, 0x0000000081700000| Untracked +| 4|0x0000000081800000, 0x0000000081800000, 0x0000000081900000| 0%| F| |TAMS 0x0000000081800000, 0x0000000081800000| Untracked +| 5|0x0000000081900000, 0x0000000081900000, 0x0000000081a00000| 0%| F| |TAMS 0x0000000081900000, 0x0000000081900000| Untracked +| 6|0x0000000081a00000, 0x0000000081a00000, 0x0000000081b00000| 0%| F| |TAMS 0x0000000081a00000, 0x0000000081a00000| Untracked +| 7|0x0000000081b00000, 0x0000000081b00000, 0x0000000081c00000| 0%| F| |TAMS 0x0000000081b00000, 0x0000000081b00000| Untracked +| 8|0x0000000081c00000, 0x0000000081c00000, 0x0000000081d00000| 0%| F| |TAMS 0x0000000081c00000, 0x0000000081c00000| Untracked +| 9|0x0000000081d00000, 0x0000000081d00000, 0x0000000081e00000| 0%| F| |TAMS 0x0000000081d00000, 0x0000000081d00000| Untracked +| 10|0x0000000081e00000, 0x0000000081e00000, 0x0000000081f00000| 0%| F| |TAMS 0x0000000081e00000, 0x0000000081e00000| Untracked +| 11|0x0000000081f00000, 0x0000000081f00000, 0x0000000082000000| 0%| F| |TAMS 0x0000000081f00000, 0x0000000081f00000| Untracked +| 12|0x0000000082000000, 0x0000000082000000, 0x0000000082100000| 0%| F| |TAMS 0x0000000082000000, 0x0000000082000000| Untracked +| 13|0x0000000082100000, 0x0000000082100000, 0x0000000082200000| 0%| F| |TAMS 0x0000000082100000, 0x0000000082100000| Untracked +| 14|0x0000000082200000, 0x0000000082200000, 0x0000000082300000| 0%| F| |TAMS 0x0000000082200000, 0x0000000082200000| Untracked +| 15|0x0000000082300000, 0x0000000082300000, 0x0000000082400000| 0%| F| |TAMS 0x0000000082300000, 0x0000000082300000| Untracked +| 16|0x0000000082400000, 0x0000000082400000, 0x0000000082500000| 0%| F| |TAMS 0x0000000082400000, 0x0000000082400000| Untracked +| 17|0x0000000082500000, 0x0000000082500000, 0x0000000082600000| 0%| F| |TAMS 0x0000000082500000, 0x0000000082500000| Untracked +| 18|0x0000000082600000, 0x0000000082600000, 0x0000000082700000| 0%| F| |TAMS 0x0000000082600000, 0x0000000082600000| Untracked +| 19|0x0000000082700000, 0x0000000082700000, 0x0000000082800000| 0%| F| |TAMS 0x0000000082700000, 0x0000000082700000| Untracked +| 20|0x0000000082800000, 0x0000000082800000, 0x0000000082900000| 0%| F| |TAMS 0x0000000082800000, 0x0000000082800000| Untracked +| 21|0x0000000082900000, 0x0000000082900000, 0x0000000082a00000| 0%| F| |TAMS 0x0000000082900000, 0x0000000082900000| Untracked +| 22|0x0000000082a00000, 0x0000000082a00000, 0x0000000082b00000| 0%| F| |TAMS 0x0000000082a00000, 0x0000000082a00000| Untracked +| 23|0x0000000082b00000, 0x0000000082b00000, 0x0000000082c00000| 0%| F| |TAMS 0x0000000082b00000, 0x0000000082b00000| Untracked +| 24|0x0000000082c00000, 0x0000000082c00000, 0x0000000082d00000| 0%| F| |TAMS 0x0000000082c00000, 0x0000000082c00000| Untracked +| 25|0x0000000082d00000, 0x0000000082d00000, 0x0000000082e00000| 0%| F| |TAMS 0x0000000082d00000, 0x0000000082d00000| Untracked +| 26|0x0000000082e00000, 0x0000000082e00000, 0x0000000082f00000| 0%| F| |TAMS 0x0000000082e00000, 0x0000000082e00000| Untracked +| 27|0x0000000082f00000, 0x0000000082f00000, 0x0000000083000000| 0%| F| |TAMS 0x0000000082f00000, 0x0000000082f00000| Untracked +| 28|0x0000000083000000, 0x0000000083000000, 0x0000000083100000| 0%| F| |TAMS 0x0000000083000000, 0x0000000083000000| Untracked +| 29|0x0000000083100000, 0x0000000083100000, 0x0000000083200000| 0%| F| |TAMS 0x0000000083100000, 0x0000000083100000| Untracked +| 30|0x0000000083200000, 0x0000000083200000, 0x0000000083300000| 0%| F| |TAMS 0x0000000083200000, 0x0000000083200000| Untracked +| 31|0x0000000083300000, 0x0000000083300000, 0x0000000083400000| 0%| F| |TAMS 0x0000000083300000, 0x0000000083300000| Untracked +| 32|0x0000000083400000, 0x0000000083400000, 0x0000000083500000| 0%| F| |TAMS 0x0000000083400000, 0x0000000083400000| Untracked +| 33|0x0000000083500000, 0x0000000083500000, 0x0000000083600000| 0%| F| |TAMS 0x0000000083500000, 0x0000000083500000| Untracked +| 34|0x0000000083600000, 0x0000000083600000, 0x0000000083700000| 0%| F| |TAMS 0x0000000083600000, 0x0000000083600000| Untracked +| 35|0x0000000083700000, 0x0000000083700000, 0x0000000083800000| 0%| F| |TAMS 0x0000000083700000, 0x0000000083700000| Untracked +| 36|0x0000000083800000, 0x0000000083800000, 0x0000000083900000| 0%| F| |TAMS 0x0000000083800000, 0x0000000083800000| Untracked +| 37|0x0000000083900000, 0x0000000083900000, 0x0000000083a00000| 0%| F| |TAMS 0x0000000083900000, 0x0000000083900000| Untracked +| 38|0x0000000083a00000, 0x0000000083a00000, 0x0000000083b00000| 0%| F| |TAMS 0x0000000083a00000, 0x0000000083a00000| Untracked +| 39|0x0000000083b00000, 0x0000000083b00000, 0x0000000083c00000| 0%| F| |TAMS 0x0000000083b00000, 0x0000000083b00000| Untracked +| 40|0x0000000083c00000, 0x0000000083c00000, 0x0000000083d00000| 0%| F| |TAMS 0x0000000083c00000, 0x0000000083c00000| Untracked +| 41|0x0000000083d00000, 0x0000000083d00000, 0x0000000083e00000| 0%| F| |TAMS 0x0000000083d00000, 0x0000000083d00000| Untracked +| 42|0x0000000083e00000, 0x0000000083e00000, 0x0000000083f00000| 0%| F| |TAMS 0x0000000083e00000, 0x0000000083e00000| Untracked +| 43|0x0000000083f00000, 0x0000000083f00000, 0x0000000084000000| 0%| F| |TAMS 0x0000000083f00000, 0x0000000083f00000| Untracked +| 44|0x0000000084000000, 0x0000000084000000, 0x0000000084100000| 0%| F| |TAMS 0x0000000084000000, 0x0000000084000000| Untracked +| 45|0x0000000084100000, 0x0000000084100000, 0x0000000084200000| 0%| F| |TAMS 0x0000000084100000, 0x0000000084100000| Untracked +| 46|0x0000000084200000, 0x0000000084200000, 0x0000000084300000| 0%| F| |TAMS 0x0000000084200000, 0x0000000084200000| Untracked +| 47|0x0000000084300000, 0x0000000084300000, 0x0000000084400000| 0%| F| |TAMS 0x0000000084300000, 0x0000000084300000| Untracked +| 48|0x0000000084400000, 0x0000000084400000, 0x0000000084500000| 0%| F| |TAMS 0x0000000084400000, 0x0000000084400000| Untracked +| 49|0x0000000084500000, 0x0000000084500000, 0x0000000084600000| 0%| F| |TAMS 0x0000000084500000, 0x0000000084500000| Untracked +| 50|0x0000000084600000, 0x0000000084600000, 0x0000000084700000| 0%| F| |TAMS 0x0000000084600000, 0x0000000084600000| Untracked +| 51|0x0000000084700000, 0x0000000084700000, 0x0000000084800000| 0%| F| |TAMS 0x0000000084700000, 0x0000000084700000| Untracked +| 52|0x0000000084800000, 0x0000000084800000, 0x0000000084900000| 0%| F| |TAMS 0x0000000084800000, 0x0000000084800000| Untracked +| 53|0x0000000084900000, 0x0000000084900000, 0x0000000084a00000| 0%| F| |TAMS 0x0000000084900000, 0x0000000084900000| Untracked +| 54|0x0000000084a00000, 0x0000000084a00000, 0x0000000084b00000| 0%| F| |TAMS 0x0000000084a00000, 0x0000000084a00000| Untracked +| 55|0x0000000084b00000, 0x0000000084b00000, 0x0000000084c00000| 0%| F| |TAMS 0x0000000084b00000, 0x0000000084b00000| Untracked +| 56|0x0000000084c00000, 0x0000000084c00000, 0x0000000084d00000| 0%| F| |TAMS 0x0000000084c00000, 0x0000000084c00000| Untracked +| 57|0x0000000084d00000, 0x0000000084d00000, 0x0000000084e00000| 0%| F| |TAMS 0x0000000084d00000, 0x0000000084d00000| Untracked +| 58|0x0000000084e00000, 0x0000000084e00000, 0x0000000084f00000| 0%| F| |TAMS 0x0000000084e00000, 0x0000000084e00000| Untracked +| 59|0x0000000084f00000, 0x0000000084f00000, 0x0000000085000000| 0%| F| |TAMS 0x0000000084f00000, 0x0000000084f00000| Untracked +| 60|0x0000000085000000, 0x0000000085000000, 0x0000000085100000| 0%| F| |TAMS 0x0000000085000000, 0x0000000085000000| Untracked +| 61|0x0000000085100000, 0x0000000085100000, 0x0000000085200000| 0%| F| |TAMS 0x0000000085100000, 0x0000000085100000| Untracked +| 62|0x0000000085200000, 0x0000000085200000, 0x0000000085300000| 0%| F| |TAMS 0x0000000085200000, 0x0000000085200000| Untracked +| 63|0x0000000085300000, 0x0000000085300000, 0x0000000085400000| 0%| F| |TAMS 0x0000000085300000, 0x0000000085300000| Untracked +| 64|0x0000000085400000, 0x0000000085400000, 0x0000000085500000| 0%| F| |TAMS 0x0000000085400000, 0x0000000085400000| Untracked +| 65|0x0000000085500000, 0x0000000085500000, 0x0000000085600000| 0%| F| |TAMS 0x0000000085500000, 0x0000000085500000| Untracked +| 66|0x0000000085600000, 0x0000000085600000, 0x0000000085700000| 0%| F| |TAMS 0x0000000085600000, 0x0000000085600000| Untracked +| 67|0x0000000085700000, 0x0000000085700000, 0x0000000085800000| 0%| F| |TAMS 0x0000000085700000, 0x0000000085700000| Untracked +| 68|0x0000000085800000, 0x0000000085800000, 0x0000000085900000| 0%| F| |TAMS 0x0000000085800000, 0x0000000085800000| Untracked +| 69|0x0000000085900000, 0x0000000085900000, 0x0000000085a00000| 0%| F| |TAMS 0x0000000085900000, 0x0000000085900000| Untracked +| 70|0x0000000085a00000, 0x0000000085a00000, 0x0000000085b00000| 0%| F| |TAMS 0x0000000085a00000, 0x0000000085a00000| Untracked +| 71|0x0000000085b00000, 0x0000000085b00000, 0x0000000085c00000| 0%| F| |TAMS 0x0000000085b00000, 0x0000000085b00000| Untracked +| 72|0x0000000085c00000, 0x0000000085c00000, 0x0000000085d00000| 0%| F| |TAMS 0x0000000085c00000, 0x0000000085c00000| Untracked +| 73|0x0000000085d00000, 0x0000000085d00000, 0x0000000085e00000| 0%| F| |TAMS 0x0000000085d00000, 0x0000000085d00000| Untracked +| 74|0x0000000085e00000, 0x0000000085e00000, 0x0000000085f00000| 0%| F| |TAMS 0x0000000085e00000, 0x0000000085e00000| Untracked +| 75|0x0000000085f00000, 0x0000000085f00000, 0x0000000086000000| 0%| F| |TAMS 0x0000000085f00000, 0x0000000085f00000| Untracked +| 76|0x0000000086000000, 0x0000000086000000, 0x0000000086100000| 0%| F| |TAMS 0x0000000086000000, 0x0000000086000000| Untracked +| 77|0x0000000086100000, 0x0000000086100000, 0x0000000086200000| 0%| F| |TAMS 0x0000000086100000, 0x0000000086100000| Untracked +| 78|0x0000000086200000, 0x0000000086200000, 0x0000000086300000| 0%| F| |TAMS 0x0000000086200000, 0x0000000086200000| Untracked +| 79|0x0000000086300000, 0x0000000086300000, 0x0000000086400000| 0%| F| |TAMS 0x0000000086300000, 0x0000000086300000| Untracked +| 80|0x0000000086400000, 0x0000000086400000, 0x0000000086500000| 0%| F| |TAMS 0x0000000086400000, 0x0000000086400000| Untracked +| 81|0x0000000086500000, 0x0000000086500000, 0x0000000086600000| 0%| F| |TAMS 0x0000000086500000, 0x0000000086500000| Untracked +| 82|0x0000000086600000, 0x0000000086600000, 0x0000000086700000| 0%| F| |TAMS 0x0000000086600000, 0x0000000086600000| Untracked +| 83|0x0000000086700000, 0x0000000086700000, 0x0000000086800000| 0%| F| |TAMS 0x0000000086700000, 0x0000000086700000| Untracked +| 84|0x0000000086800000, 0x0000000086800000, 0x0000000086900000| 0%| F| |TAMS 0x0000000086800000, 0x0000000086800000| Untracked +| 85|0x0000000086900000, 0x0000000086900000, 0x0000000086a00000| 0%| F| |TAMS 0x0000000086900000, 0x0000000086900000| Untracked +| 86|0x0000000086a00000, 0x0000000086a00000, 0x0000000086b00000| 0%| F| |TAMS 0x0000000086a00000, 0x0000000086a00000| Untracked +| 87|0x0000000086b00000, 0x0000000086b00000, 0x0000000086c00000| 0%| F| |TAMS 0x0000000086b00000, 0x0000000086b00000| Untracked +| 88|0x0000000086c00000, 0x0000000086c00000, 0x0000000086d00000| 0%| F| |TAMS 0x0000000086c00000, 0x0000000086c00000| Untracked +| 89|0x0000000086d00000, 0x0000000086d00000, 0x0000000086e00000| 0%| F| |TAMS 0x0000000086d00000, 0x0000000086d00000| Untracked +| 90|0x0000000086e00000, 0x0000000086e00000, 0x0000000086f00000| 0%| F| |TAMS 0x0000000086e00000, 0x0000000086e00000| Untracked +| 91|0x0000000086f00000, 0x0000000086f00000, 0x0000000087000000| 0%| F| |TAMS 0x0000000086f00000, 0x0000000086f00000| Untracked +| 92|0x0000000087000000, 0x0000000087000000, 0x0000000087100000| 0%| F| |TAMS 0x0000000087000000, 0x0000000087000000| Untracked +| 93|0x0000000087100000, 0x0000000087100000, 0x0000000087200000| 0%| F| |TAMS 0x0000000087100000, 0x0000000087100000| Untracked +| 94|0x0000000087200000, 0x0000000087200000, 0x0000000087300000| 0%| F| |TAMS 0x0000000087200000, 0x0000000087200000| Untracked +| 95|0x0000000087300000, 0x0000000087300000, 0x0000000087400000| 0%| F| |TAMS 0x0000000087300000, 0x0000000087300000| Untracked +| 96|0x0000000087400000, 0x0000000087400000, 0x0000000087500000| 0%| F| |TAMS 0x0000000087400000, 0x0000000087400000| Untracked +| 97|0x0000000087500000, 0x0000000087500000, 0x0000000087600000| 0%| F| |TAMS 0x0000000087500000, 0x0000000087500000| Untracked +| 98|0x0000000087600000, 0x0000000087600000, 0x0000000087700000| 0%| F| |TAMS 0x0000000087600000, 0x0000000087600000| Untracked +| 99|0x0000000087700000, 0x0000000087700000, 0x0000000087800000| 0%| F| |TAMS 0x0000000087700000, 0x0000000087700000| Untracked +| 100|0x0000000087800000, 0x0000000087800000, 0x0000000087900000| 0%| F| |TAMS 0x0000000087800000, 0x0000000087800000| Untracked +| 101|0x0000000087900000, 0x0000000087900000, 0x0000000087a00000| 0%| F| |TAMS 0x0000000087900000, 0x0000000087900000| Untracked +| 102|0x0000000087a00000, 0x0000000087a00000, 0x0000000087b00000| 0%| F| |TAMS 0x0000000087a00000, 0x0000000087a00000| Untracked +| 103|0x0000000087b00000, 0x0000000087b00000, 0x0000000087c00000| 0%| F| |TAMS 0x0000000087b00000, 0x0000000087b00000| Untracked +| 104|0x0000000087c00000, 0x0000000087c00000, 0x0000000087d00000| 0%| F| |TAMS 0x0000000087c00000, 0x0000000087c00000| Untracked +| 105|0x0000000087d00000, 0x0000000087d00000, 0x0000000087e00000| 0%| F| |TAMS 0x0000000087d00000, 0x0000000087d00000| Untracked +| 106|0x0000000087e00000, 0x0000000087e00000, 0x0000000087f00000| 0%| F| |TAMS 0x0000000087e00000, 0x0000000087e00000| Untracked +| 107|0x0000000087f00000, 0x0000000087f00000, 0x0000000088000000| 0%| F| |TAMS 0x0000000087f00000, 0x0000000087f00000| Untracked +| 108|0x0000000088000000, 0x0000000088000000, 0x0000000088100000| 0%| F| |TAMS 0x0000000088000000, 0x0000000088000000| Untracked +| 109|0x0000000088100000, 0x0000000088100000, 0x0000000088200000| 0%| F| |TAMS 0x0000000088100000, 0x0000000088100000| Untracked +| 110|0x0000000088200000, 0x0000000088200000, 0x0000000088300000| 0%| F| |TAMS 0x0000000088200000, 0x0000000088200000| Untracked +| 111|0x0000000088300000, 0x0000000088300000, 0x0000000088400000| 0%| F| |TAMS 0x0000000088300000, 0x0000000088300000| Untracked +| 112|0x0000000088400000, 0x0000000088400000, 0x0000000088500000| 0%| F| |TAMS 0x0000000088400000, 0x0000000088400000| Untracked +| 113|0x0000000088500000, 0x0000000088500000, 0x0000000088600000| 0%| F| |TAMS 0x0000000088500000, 0x0000000088500000| Untracked +| 114|0x0000000088600000, 0x0000000088600000, 0x0000000088700000| 0%| F| |TAMS 0x0000000088600000, 0x0000000088600000| Untracked +| 115|0x0000000088700000, 0x0000000088700000, 0x0000000088800000| 0%| F| |TAMS 0x0000000088700000, 0x0000000088700000| Untracked +| 116|0x0000000088800000, 0x0000000088800000, 0x0000000088900000| 0%| F| |TAMS 0x0000000088800000, 0x0000000088800000| Untracked +| 117|0x0000000088900000, 0x0000000088900000, 0x0000000088a00000| 0%| F| |TAMS 0x0000000088900000, 0x0000000088900000| Untracked +| 118|0x0000000088a00000, 0x0000000088a00000, 0x0000000088b00000| 0%| F| |TAMS 0x0000000088a00000, 0x0000000088a00000| Untracked +| 119|0x0000000088b00000, 0x0000000088b00000, 0x0000000088c00000| 0%| F| |TAMS 0x0000000088b00000, 0x0000000088b00000| Untracked +| 120|0x0000000088c00000, 0x0000000088c00000, 0x0000000088d00000| 0%| F| |TAMS 0x0000000088c00000, 0x0000000088c00000| Untracked +| 121|0x0000000088d00000, 0x0000000088d00000, 0x0000000088e00000| 0%| F| |TAMS 0x0000000088d00000, 0x0000000088d00000| Untracked +| 122|0x0000000088e00000, 0x0000000088e00000, 0x0000000088f00000| 0%| F| |TAMS 0x0000000088e00000, 0x0000000088e00000| Untracked +| 123|0x0000000088f00000, 0x0000000088f00000, 0x0000000089000000| 0%| F| |TAMS 0x0000000088f00000, 0x0000000088f00000| Untracked +| 124|0x0000000089000000, 0x00000000890e45d0, 0x0000000089100000| 89%| S|CS|TAMS 0x0000000089000000, 0x0000000089000000| Complete +| 125|0x0000000089100000, 0x0000000089100000, 0x0000000089200000| 0%| F| |TAMS 0x0000000089100000, 0x0000000089100000| Untracked +| 126|0x0000000089200000, 0x0000000089200000, 0x0000000089300000| 0%| F| |TAMS 0x0000000089200000, 0x0000000089200000| Untracked +| 127|0x0000000089300000, 0x0000000089300000, 0x0000000089400000| 0%| F| |TAMS 0x0000000089300000, 0x0000000089300000| Untracked + +Card table byte_map: [0x000001e0a9f00000,0x000001e0aa300000] _byte_map_base: 0x000001e0a9af6000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x000001e092385a18, (CMBitMap*) 0x000001e092385a50 + Prev Bits: [0x000001e0aa700000, 0x000001e0ac6b0000) + Next Bits: [0x000001e0ac6b0000, 0x000001e0ae660000) + +Polling page: 0x000001e090360000 + +Metaspace: + +Usage: + Non-class: 4.47 MB capacity, 4.47 MB (>99%) used, 5.84 KB ( <1%) free+waste, 2.06 KB ( <1%) overhead. + Class: 438.00 KB capacity, 427.03 KB ( 97%) used, 9.72 KB ( 2%) free+waste, 1.25 KB ( <1%) overhead. + Both: 4.90 MB capacity, 4.88 MB (>99%) used, 15.55 KB ( <1%) free+waste, 3.31 KB ( <1%) overhead. + +Virtual space: + Non-class space: 20.00 MB reserved, 4.50 MB ( 23%) committed + Class space: 1.00 GB reserved, 512.00 KB ( <1%) committed + Both: 1.02 GB reserved, 5.00 MB ( <1%) committed + +Chunk freelists: + Non-Class: 3.38 KB + Class: 1.25 KB + Both: 4.63 KB + +CodeHeap 'non-profiled nmethods': size=120000Kb used=46Kb max_used=46Kb free=119954Kb + bounds [0x000001e0a22a0000, 0x000001e0a2510000, 0x000001e0a97d0000] +CodeHeap 'profiled nmethods': size=120000Kb used=223Kb max_used=223Kb free=119776Kb + bounds [0x000001e09ad70000, 0x000001e09afe0000, 0x000001e0a22a0000] +CodeHeap 'non-nmethods': size=5760Kb used=1028Kb max_used=1037Kb free=4731Kb + bounds [0x000001e09a7d0000, 0x000001e09aa40000, 0x000001e09ad70000] + total_blobs=474 nmethods=179 adapters=207 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (10 events): +Event: 0.200 Thread 0x000001e0b19bc000 nmethod 169 0x000001e09ada2910 code [0x000001e09ada2ac0, 0x000001e09ada2c50] +Event: 0.200 Thread 0x000001e0b19bc000 170 3 java.util.HashMap:: (11 bytes) +Event: 0.200 Thread 0x000001e0b19bc000 nmethod 170 0x000001e09ada2d10 code [0x000001e09ada2ec0, 0x000001e09ada30d8] +Event: 0.201 Thread 0x000001e0b19bc000 171 3 jdk.internal.module.ModuleBootstrap$2::hasNext (30 bytes) +Event: 0.201 Thread 0x000001e0b19bc000 nmethod 171 0x000001e09ada3190 code [0x000001e09ada3360, 0x000001e09ada36e0] +Event: 0.201 Thread 0x000001e0b19bc000 172 3 jdk.internal.module.ModuleBootstrap$2::next (52 bytes) +Event: 0.201 Thread 0x000001e0b19bc000 nmethod 172 0x000001e09ada3810 code [0x000001e09ada3a20, 0x000001e09ada3f90] +Event: 0.201 Thread 0x000001e0b19bc000 174 1 java.lang.Module::getDescriptor (5 bytes) +Event: 0.201 Thread 0x000001e0b19bc000 nmethod 174 0x000001e0a22ab510 code [0x000001e0a22ab6a0, 0x000001e0a22ab7b8] +Event: 0.206 Thread 0x000001e0b19bc000 176 3 java.lang.String::substring (58 bytes) + +GC Heap History (0 events): +No events + +Deoptimization events (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (0 events): +No events + +Events (10 events): +Event: 0.202 loading class jdk/internal/module/ModuleBootstrap$SafeModuleFinder done +Event: 0.205 loading class java/lang/InternalError +Event: 0.205 loading class java/lang/InternalError done +Event: 0.205 loading class sun/instrument/InstrumentationImpl +Event: 0.205 loading class java/lang/instrument/Instrumentation +Event: 0.205 loading class java/lang/instrument/Instrumentation done +Event: 0.206 loading class sun/instrument/InstrumentationImpl done +Event: 0.207 loading class java/lang/StringCoding$StringEncoder +Event: 0.207 loading class java/lang/StringCoding$StringEncoder done +Event: 0.207 loading class sun/nio/cs/DoubleByte$Encoder + + +Dynamic libraries: +0x00007ff7511a0000 - 0x00007ff7511af000 C:\Program Files\Java\jdk-11.0.9\bin\java.exe +0x00007ffd42ab0000 - 0x00007ffd42ca7000 C:\WINDOWS\SYSTEM32\ntdll.dll +0x00007ffd41820000 - 0x00007ffd418dd000 C:\WINDOWS\System32\KERNEL32.DLL +0x00007ffd40200000 - 0x00007ffd404cd000 C:\WINDOWS\System32\KERNELBASE.dll +0x00007ffd407a0000 - 0x00007ffd408a0000 C:\WINDOWS\System32\ucrtbase.dll +0x00007ffd36f70000 - 0x00007ffd36f88000 C:\Program Files\Java\jdk-11.0.9\bin\jli.dll +0x00007ffd370a0000 - 0x00007ffd370b5000 C:\Program Files\Java\jdk-11.0.9\bin\VCRUNTIME140.dll +0x00007ffd41660000 - 0x00007ffd4170e000 C:\WINDOWS\System32\ADVAPI32.dll +0x00007ffd41990000 - 0x00007ffd41a2e000 C:\WINDOWS\System32\msvcrt.dll +0x00007ffd412d0000 - 0x00007ffd4136c000 C:\WINDOWS\System32\sechost.dll +0x00007ffd41370000 - 0x00007ffd41495000 C:\WINDOWS\System32\RPCRT4.dll +0x00007ffd428d0000 - 0x00007ffd42a70000 C:\WINDOWS\System32\USER32.dll +0x00007ffd401d0000 - 0x00007ffd401f2000 C:\WINDOWS\System32\win32u.dll +0x00007ffd258f0000 - 0x00007ffd25b8a000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll +0x00007ffd40d40000 - 0x00007ffd40d6a000 C:\WINDOWS\System32\GDI32.dll +0x00007ffd404d0000 - 0x00007ffd405db000 C:\WINDOWS\System32\gdi32full.dll +0x00007ffd40700000 - 0x00007ffd4079d000 C:\WINDOWS\System32\msvcp_win.dll +0x00007ffd27410000 - 0x00007ffd2741a000 C:\WINDOWS\SYSTEM32\VERSION.dll +0x00007ffd411b0000 - 0x00007ffd411e0000 C:\WINDOWS\System32\IMM32.DLL +0x00007ffd17cd0000 - 0x00007ffd17d6b000 C:\Program Files\Java\jdk-11.0.9\bin\msvcp140.dll +0x00007ffcf4ab0000 - 0x00007ffcf55a7000 C:\Program Files\Java\jdk-11.0.9\bin\server\jvm.dll +0x00007ffd41140000 - 0x00007ffd41148000 C:\WINDOWS\System32\PSAPI.DLL +0x00007ffd0a3b0000 - 0x00007ffd0a3b9000 C:\WINDOWS\SYSTEM32\WSOCK32.dll +0x00007ffd40d70000 - 0x00007ffd40ddb000 C:\WINDOWS\System32\WS2_32.dll +0x00007ffd29ae0000 - 0x00007ffd29b07000 C:\WINDOWS\SYSTEM32\WINMM.dll +0x00007ffd3ea60000 - 0x00007ffd3ea72000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll +0x00007ffd36f40000 - 0x00007ffd36f50000 C:\Program Files\Java\jdk-11.0.9\bin\verify.dll +0x00007ffd3de70000 - 0x00007ffd3e054000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL +0x00007ffd2bdd0000 - 0x00007ffd2bdfc000 C:\WINDOWS\SYSTEM32\dbgcore.DLL +0x00007ffd40920000 - 0x00007ffd409a2000 C:\WINDOWS\System32\bcryptPrimitives.dll +0x00007ffd36e70000 - 0x00007ffd36e98000 C:\Program Files\Java\jdk-11.0.9\bin\java.dll +0x00007ffd36e60000 - 0x00007ffd36e6a000 C:\Program Files\Java\jdk-11.0.9\bin\jimage.dll +0x00007ffd35010000 - 0x00007ffd3501e000 C:\Program Files\Java\jdk-11.0.9\bin\instrument.dll +0x00007ffd36e40000 - 0x00007ffd36e56000 C:\Program Files\Java\jdk-11.0.9\bin\zip.dll +0x00007ffd41c50000 - 0x00007ffd42394000 C:\WINDOWS\System32\SHELL32.dll +0x00007ffd3e2b0000 - 0x00007ffd3ea44000 C:\WINDOWS\SYSTEM32\windows.storage.dll +0x00007ffd40de0000 - 0x00007ffd41134000 C:\WINDOWS\System32\combase.dll +0x00007ffd3fc30000 - 0x00007ffd3fc5c000 C:\WINDOWS\SYSTEM32\Wldp.dll +0x00007ffd418e0000 - 0x00007ffd4198d000 C:\WINDOWS\System32\SHCORE.dll +0x00007ffd42870000 - 0x00007ffd428c5000 C:\WINDOWS\System32\shlwapi.dll +0x00007ffd40110000 - 0x00007ffd4012f000 C:\WINDOWS\SYSTEM32\profapi.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Java\jdk-11.0.9\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e;C:\Program Files\Java\jdk-11.0.9\bin\server + +VM Arguments: +jvm_args: -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\lib\idea_rt.jar=12696:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\bin -Dfile.encoding=UTF-8 +java_command: game.Main +java_class_path (initial): C:\Users\dudwl\Downloads\racingcar-with\java-racingcar-2\java-racingcar-playground\out\production\classes +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 4 {product} {ergonomic} + uint ConcGCThreads = 2 {product} {ergonomic} + uint G1ConcRefinementThreads = 8 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 134217728 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 2126512128 {product} {ergonomic} + size_t MaxNewSize = 1275068416 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 5836300 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122910970 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122910970 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=C:\Program Files\Java\jdk-11.0.2 +PATH=C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files (x86)\NAT Service;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\app\dudwl\product\dbhomeXE\bin;C:\app\dudwl\product\18.0.0\dbhomeXE\bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk-11.0.9\bin;C:\Program Files\Java\jdk-11.0.2\bin;"sdk location\tool; sdk location\platform-tools;";C:\Program Files\Git\cmd;C:\Program Files\MongoDB\Server\4.4\bin;C:\Users\dudwl\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.9;C:\Users\dudwl\AppData\Local\Microsoft\WindowsApps;C:\dev\apache-maven-3.8.2\bin;;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\dudwl\AppData\Local\Microsoft\WindowsApps;C:\Users\dudwl\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\dudwl\AppData\Local\GitHubDesktop\bin;C:\Users\dudwl\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.5\bin;;C:\Users\dudwl\AppData\Local\afreeca +USERNAME=dudwl +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 10, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: Windows 10 , 64 bit Build 19041 (10.0.19041.1741) + +CPU:total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 142 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, fma + +Memory: 4k page, system-wide physical 8104M (554M free) +TotalPageFile size 17651M (AvailPageFile size 0M) +current process WorkingSet (physical memory assigned to process): 35M, peak: 35M +current process commit charge ("private bytes"): 204M, peak: 205M + +vm_info: Java HotSpot(TM) 64-Bit Server VM (11.0.9+7-LTS) for windows-amd64 JRE (11.0.9+7-LTS), built on Sep 15 2020 16:47:03 by "mach5one" with MS VC++ 15.9 (VS2017) + +END. diff --git a/replay_pid10196.log b/replay_pid10196.log new file mode 100644 index 000000000..ef98f7411 --- /dev/null +++ b/replay_pid10196.log @@ -0,0 +1,354 @@ +JvmtiExport can_access_local_variables 0 +JvmtiExport can_hotswap_or_post_breakpoint 0 +JvmtiExport can_post_on_exceptions 0 +# 141 ciObject found +instanceKlass jdk/internal/loader/URLClassPath$3 +instanceKlass java/security/PrivilegedExceptionAction +instanceKlass sun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar +instanceKlass sun/util/locale/InternalLocaleBuilder +instanceKlass sun/util/locale/LocaleUtils +instanceKlass sun/util/locale/BaseLocale$Key +instanceKlass sun/util/locale/BaseLocale +instanceKlass sun/util/locale/LocaleObjectCache +instanceKlass java/util/Locale +instanceKlass sun/net/util/URLUtil +instanceKlass sun/instrument/TransformerManager$TransformerInfo +instanceKlass sun/instrument/TransformerManager +instanceKlass java/util/ArrayDeque$DeqIterator +instanceKlass java/lang/ClassLoader$NativeLibrary +instanceKlass java/lang/ClassLoader$2 +instanceKlass java/nio/charset/CoderResult +instanceKlass java/lang/Readable +instanceKlass sun/nio/cs/ArrayEncoder +instanceKlass java/lang/StringCoding$StringEncoder +instanceKlass sun/instrument/InstrumentationImpl +instanceKlass java/lang/instrument/Instrumentation +instanceKlass jdk/internal/module/ModuleBootstrap$SafeModuleFinder +instanceKlass jdk/internal/module/IllegalAccessLogger +instanceKlass jdk/internal/module/ModuleBootstrap$2 +instanceKlass jdk/internal/module/IllegalAccessLogger$Builder +instanceKlass java/lang/ModuleLayer$Controller +instanceKlass jdk/internal/module/ServicesCatalog$ServiceProvider +instanceKlass java/util/concurrent/CopyOnWriteArrayList +instanceKlass jdk/internal/module/ModuleLoaderMap$Mapper +instanceKlass jdk/internal/module/ModuleLoaderMap +instanceKlass java/lang/module/ResolvedModule +instanceKlass java/util/Collections$UnmodifiableCollection$1 +instanceKlass java/lang/ModuleLayer +instanceKlass java/lang/module/ModuleFinder$1 +instanceKlass java/nio/file/Path +instanceKlass java/nio/file/Watchable +instanceKlass java/lang/module/Resolver +instanceKlass java/lang/module/Configuration +instanceKlass java/util/ImmutableCollections$Set12$1 +instanceKlass java/util/stream/FindOps$FindSink$OfRef$$Lambda$13 +instanceKlass java/util/stream/FindOps$FindSink$OfRef$$Lambda$12 +instanceKlass java/util/stream/FindOps$FindSink$OfRef$$Lambda$11 +instanceKlass java/util/stream/FindOps$FindSink$OfRef$$Lambda$10 +instanceKlass java/util/stream/FindOps$FindOp +instanceKlass java/util/stream/FindOps$FindSink +instanceKlass java/util/stream/FindOps +instanceKlass jdk/internal/module/DefaultRoots$$Lambda$9 +instanceKlass java/util/stream/Sink$ChainedReference +instanceKlass java/util/stream/ReduceOps$Box +instanceKlass java/util/stream/ReduceOps$AccumulatingSink +instanceKlass java/util/stream/TerminalSink +instanceKlass java/util/stream/Sink +instanceKlass java/util/function/Consumer +instanceKlass java/util/stream/ReduceOps$ReduceOp +instanceKlass java/util/stream/TerminalOp +instanceKlass java/util/stream/ReduceOps +instanceKlass java/util/stream/Collectors$$Lambda$8 +instanceKlass java/util/stream/Collectors$$Lambda$7 +instanceKlass java/util/function/BinaryOperator +instanceKlass java/util/function/BiFunction +instanceKlass java/util/stream/Collectors$$Lambda$6 +instanceKlass java/util/function/BiConsumer +instanceKlass java/util/stream/Collectors$$Lambda$5 +instanceKlass java/util/stream/Collectors$CollectorImpl +instanceKlass java/util/stream/Collector +instanceKlass java/util/Collections$UnmodifiableCollection +instanceKlass java/util/stream/Collectors +instanceKlass jdk/internal/module/DefaultRoots$$Lambda$4 +instanceKlass jdk/internal/module/DefaultRoots$$Lambda$3 +instanceKlass jdk/internal/org/objectweb/asm/FieldVisitor +instanceKlass jdk/internal/module/DefaultRoots$$Lambda$2 +instanceKlass jdk/internal/misc/InnocuousThread$2 +instanceKlass jdk/internal/misc/InnocuousThread$3 +instanceKlass jdk/internal/ref/CleanerFactory$1$1 +instanceKlass java/lang/ref/Cleaner$Cleanable +instanceKlass jdk/internal/ref/CleanerImpl +instanceKlass java/lang/ref/Cleaner$1 +instanceKlass java/lang/ref/Cleaner +instanceKlass jdk/internal/ref/CleanerFactory$1 +instanceKlass java/util/concurrent/ThreadFactory +instanceKlass jdk/internal/ref/CleanerFactory +instanceKlass java/lang/invoke/LambdaForm$MH +instanceKlass java/util/ArrayList$Itr +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$CpPatch +instanceKlass java/lang/invoke/LambdaFormBuffer +instanceKlass java/lang/invoke/LambdaFormEditor +instanceKlass java/lang/invoke/DelegatingMethodHandle$Holder +instanceKlass sun/invoke/util/Wrapper$1 +instanceKlass java/lang/invoke/DirectMethodHandle$1 +instanceKlass sun/invoke/empty/Empty +instanceKlass sun/invoke/util/VerifyType +instanceKlass java/util/ImmutableCollections$ListItr +instanceKlass java/util/ListIterator +instanceKlass java/lang/invoke/ClassSpecializer$Factory +instanceKlass java/lang/invoke/ClassSpecializer$SpeciesData +instanceKlass java/lang/invoke/ClassSpecializer$1 +instanceKlass java/util/function/Function +instanceKlass java/lang/invoke/ClassSpecializer +instanceKlass java/lang/invoke/InnerClassLambdaMetafactory$1 +instanceKlass jdk/internal/module/DefaultRoots$$Lambda$1 +instanceKlass jdk/internal/org/objectweb/asm/AnnotationVisitor +instanceKlass jdk/internal/org/objectweb/asm/Frame +instanceKlass jdk/internal/org/objectweb/asm/Label +instanceKlass jdk/internal/org/objectweb/asm/MethodVisitor +instanceKlass jdk/internal/org/objectweb/asm/Item +instanceKlass jdk/internal/org/objectweb/asm/ByteVector +instanceKlass jdk/internal/org/objectweb/asm/ClassVisitor +instanceKlass sun/invoke/util/BytecodeDescriptor +instanceKlass java/lang/invoke/InfoFromMemberName +instanceKlass java/lang/invoke/MethodHandleInfo +instanceKlass sun/security/action/GetBooleanAction +instanceKlass jdk/internal/org/objectweb/asm/Type +instanceKlass java/lang/invoke/AbstractValidatingLambdaMetafactory +instanceKlass java/lang/invoke/MethodHandleImpl$1 +instanceKlass jdk/internal/access/JavaLangInvokeAccess +instanceKlass java/lang/invoke/Invokers$Holder +instanceKlass java/lang/invoke/BootstrapMethodInvoker +instanceKlass java/util/function/Predicate +instanceKlass java/lang/WeakPairMap$Pair$Lookup +instanceKlass java/lang/WeakPairMap$Pair +instanceKlass java/lang/WeakPairMap +instanceKlass java/lang/Module$ReflectionData +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$2 +instanceKlass java/lang/invoke/InvokerBytecodeGenerator +instanceKlass java/lang/invoke/LambdaForm$Holder +instanceKlass java/lang/invoke/LambdaForm$Name +instanceKlass java/lang/invoke/Invokers +instanceKlass java/lang/invoke/MethodHandleImpl +instanceKlass sun/invoke/util/ValueConversions +instanceKlass java/lang/invoke/DirectMethodHandle$Holder +instanceKlass java/lang/invoke/LambdaForm$NamedFunction +instanceKlass sun/invoke/util/Wrapper$Format +instanceKlass sun/invoke/util/VerifyAccess +instanceKlass java/security/Permission +instanceKlass java/security/Guard +instanceKlass java/lang/invoke/MemberName$Factory +instanceKlass java/lang/invoke/MethodHandles +instanceKlass java/lang/invoke/MethodTypeForm +instanceKlass java/lang/Void +instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet +instanceKlass java/lang/invoke/MethodHandles$Lookup +instanceKlass java/lang/invoke/LambdaMetafactory +instanceKlass sun/reflect/annotation/AnnotationParser +instanceKlass java/lang/Class$3 +instanceKlass java/lang/PublicMethods$Key +instanceKlass java/lang/PublicMethods$MethodList +instanceKlass java/util/EnumMap$1 +instanceKlass java/util/stream/StreamOpFlag$MaskBuilder +instanceKlass java/util/stream/PipelineHelper +instanceKlass java/util/stream/Stream +instanceKlass java/util/stream/BaseStream +instanceKlass java/util/stream/StreamSupport +instanceKlass java/util/Spliterators$IteratorSpliterator +instanceKlass java/util/Spliterator$OfDouble +instanceKlass java/util/Spliterator$OfLong +instanceKlass java/util/Spliterator$OfInt +instanceKlass java/util/Spliterator$OfPrimitive +instanceKlass java/util/Spliterators$EmptySpliterator +instanceKlass java/util/Spliterator +instanceKlass java/util/Spliterators +instanceKlass jdk/internal/module/DefaultRoots +instanceKlass java/util/HashMap$HashIterator +instanceKlass java/util/ImmutableCollections$SetN$SetNIterator +instanceKlass jdk/internal/loader/BuiltinClassLoader$LoadedModule +instanceKlass jdk/internal/util/Preconditions +instanceKlass java/util/Deque +instanceKlass java/util/Queue +instanceKlass sun/net/util/IPAddressUtil +instanceKlass java/net/URLStreamHandler +instanceKlass sun/net/www/ParseUtil +instanceKlass java/io/ExpiringCache$Entry +instanceKlass java/net/URL$3 +instanceKlass jdk/internal/access/JavaNetURLAccess +instanceKlass java/net/URL$DefaultFactory +instanceKlass java/net/URLStreamHandlerFactory +instanceKlass jdk/internal/loader/URLClassPath +instanceKlass java/security/Principal +instanceKlass java/security/ProtectionDomain$Key +instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl +instanceKlass jdk/internal/access/JavaSecurityAccess +instanceKlass java/lang/ClassLoader$ParallelLoaders +instanceKlass jdk/internal/loader/AbstractClassLoaderValue +instanceKlass jdk/internal/module/ServicesCatalog +instanceKlass jdk/internal/loader/BootLoader +instanceKlass java/util/Optional +instanceKlass jdk/internal/module/ModuleBootstrap$Counters +instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleFinder +instanceKlass java/lang/module/ModuleFinder +instanceKlass jdk/internal/module/SystemModuleFinders$3 +instanceKlass jdk/internal/module/ModuleHashes$HashSupplier +instanceKlass java/util/KeyValueHolder +instanceKlass jdk/internal/module/SystemModuleFinders$2 +instanceKlass java/util/function/Supplier +instanceKlass java/lang/module/ModuleReference +instanceKlass jdk/internal/module/ModuleResolution +instanceKlass java/util/Collections$UnmodifiableMap +instanceKlass jdk/internal/module/ModuleHashes$Builder +instanceKlass jdk/internal/module/ModuleHashes +instanceKlass jdk/internal/module/ModuleTarget +instanceKlass java/lang/Enum +instanceKlass java/lang/module/ModuleDescriptor$Version +instanceKlass java/lang/module/ModuleDescriptor$Provides +instanceKlass java/lang/module/ModuleDescriptor$Opens +instanceKlass java/lang/module/ModuleDescriptor$Exports +instanceKlass java/lang/module/ModuleDescriptor$Requires +instanceKlass jdk/internal/module/Builder +instanceKlass jdk/internal/module/SystemModules$all +instanceKlass jdk/internal/module/SystemModules +instanceKlass jdk/internal/module/SystemModulesMap +instanceKlass java/net/URI$1 +instanceKlass jdk/internal/access/JavaNetUriAccess +instanceKlass java/net/URI +instanceKlass jdk/internal/module/SystemModuleFinders +instanceKlass jdk/internal/module/ModulePatcher +instanceKlass java/util/ImmutableCollections +instanceKlass java/io/ExpiringCache +instanceKlass java/io/FileSystem +instanceKlass java/io/DefaultFileSystem +instanceKlass java/io/File +instanceKlass java/lang/module/ModuleDescriptor$1 +instanceKlass jdk/internal/access/JavaLangModuleAccess +instanceKlass java/lang/module/ModuleDescriptor +instanceKlass jdk/internal/module/ModuleBootstrap +instanceKlass java/lang/CharacterData +instanceKlass java/lang/invoke/MethodHandleStatics +instanceKlass java/lang/System$2 +instanceKlass jdk/internal/access/JavaLangAccess +instanceKlass sun/io/Win32ErrorMode +instanceKlass jdk/internal/misc/OSEnvironment +instanceKlass java/lang/Integer$IntegerCache +instanceKlass jdk/internal/misc/Signal$NativeHandler +instanceKlass java/util/Hashtable$Entry +instanceKlass jdk/internal/misc/Signal +instanceKlass java/lang/Terminator$1 +instanceKlass jdk/internal/misc/Signal$Handler +instanceKlass java/lang/Terminator +instanceKlass java/nio/ByteOrder +instanceKlass java/nio/Buffer$1 +instanceKlass jdk/internal/access/JavaNioAccess +instanceKlass java/nio/charset/CharsetEncoder +instanceKlass sun/security/action/GetPropertyAction +instanceKlass java/io/Writer +instanceKlass java/io/OutputStream +instanceKlass java/io/Flushable +instanceKlass java/io/FileDescriptor$1 +instanceKlass jdk/internal/access/JavaIOFileDescriptorAccess +instanceKlass java/io/FileDescriptor +instanceKlass jdk/internal/util/StaticProperty +instanceKlass java/util/concurrent/ConcurrentHashMap$MapEntry +instanceKlass java/util/concurrent/ConcurrentHashMap$Traverser +instanceKlass java/util/Iterator +instanceKlass java/lang/reflect/Array +instanceKlass java/util/Collections$SynchronizedCollection +instanceKlass java/util/List +instanceKlass java/util/RandomAccess +instanceKlass java/util/Collections +instanceKlass java/util/concurrent/ConcurrentHashMap$CollectionView +instanceKlass java/util/Properties$EntrySet +instanceKlass java/lang/VersionProps +instanceKlass java/lang/StringCoding$Result +instanceKlass java/nio/charset/CodingErrorAction +instanceKlass java/nio/charset/CharsetDecoder +instanceKlass sun/nio/cs/ArrayDecoder +instanceKlass sun/nio/cs/DelegatableDecoder +instanceKlass java/lang/StringUTF16 +instanceKlass sun/nio/cs/DoubleByte +instanceKlass java/lang/StringCoding$StringDecoder +instanceKlass java/lang/ThreadLocal$ThreadLocalMap +instanceKlass java/lang/StringCoding +instanceKlass java/util/HashMap$Node +instanceKlass jdk/internal/reflect/Reflection +instanceKlass java/lang/Class$1 +instanceKlass java/lang/reflect/ReflectAccess +instanceKlass jdk/internal/reflect/LangReflectAccess +instanceKlass java/lang/reflect/Modifier +instanceKlass java/lang/Class$Atomic +instanceKlass java/lang/Class$ReflectionData +instanceKlass java/nio/charset/StandardCharsets +instanceKlass sun/nio/cs/HistoricallyNamedCharset +instanceKlass java/lang/Math +instanceKlass java/util/Arrays +instanceKlass java/lang/ThreadLocal +instanceKlass java/nio/charset/spi/CharsetProvider +instanceKlass java/nio/charset/Charset +instanceKlass java/lang/StringLatin1 +instanceKlass jdk/internal/misc/VM +instanceKlass jdk/internal/access/SharedSecrets +instanceKlass java/lang/ref/Reference$1 +instanceKlass jdk/internal/access/JavaLangRefAccess +instanceKlass java/lang/ref/ReferenceQueue$Lock +instanceKlass java/lang/ref/ReferenceQueue +instanceKlass jdk/internal/reflect/ReflectionFactory +instanceKlass java/util/concurrent/locks/LockSupport +instanceKlass java/util/concurrent/ConcurrentHashMap$Node +instanceKlass java/util/Map$Entry +instanceKlass java/util/concurrent/ConcurrentHashMap$CounterCell +instanceKlass java/util/concurrent/locks/ReentrantLock +instanceKlass java/util/concurrent/locks/Lock +instanceKlass java/lang/Runtime +instanceKlass java/util/concurrent/ConcurrentMap +instanceKlass java/util/AbstractMap +instanceKlass java/security/cert/Certificate +instanceKlass jdk/internal/reflect/ReflectionFactory$GetReflectionFactoryAction +instanceKlass java/security/PrivilegedAction +instanceKlass java/util/Objects +instanceKlass java/util/AbstractCollection +instanceKlass java/util/Set +instanceKlass java/util/Collection +instanceKlass java/lang/Iterable +instanceKlass java/security/AccessController +instanceKlass java/lang/String$CaseInsensitiveComparator +instanceKlass java/util/Comparator +instanceKlass java/io/ObjectStreamField +instanceKlass java/lang/Number +instanceKlass java/lang/Character +instanceKlass java/lang/Boolean +instanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer +instanceKlass java/lang/LiveStackFrame +instanceKlass java/lang/StackFrameInfo +instanceKlass java/lang/StackWalker$StackFrame +instanceKlass java/lang/StackStreamFactory$AbstractStackWalker +instanceKlass java/lang/StackWalker +instanceKlass java/nio/Buffer +instanceKlass java/lang/StackTraceElement +instanceKlass java/security/CodeSource +instanceKlass jdk/internal/loader/ClassLoaders +instanceKlass java/util/jar/Manifest +instanceKlass java/net/URL +instanceKlass java/io/InputStream +instanceKlass java/io/Closeable +instanceKlass java/lang/AutoCloseable +instanceKlass jdk/internal/module/Modules +instanceKlass jdk/internal/misc/Unsafe +instanceKlass java/lang/AbstractStringBuilder +instanceKlass java/lang/Appendable +instanceKlass java/lang/AssertionStatusDirectives +instanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext +instanceKlass java/lang/invoke/CallSite +instanceKlass java/lang/invoke/MethodType +instanceKlass java/lang/invoke/LambdaForm +instanceKlass java/lang/invoke/MethodHandleNatives +instanceKlass java/lang/invoke/ResolvedMethodName +instanceKlass java/lang/invoke/MemberName +instanceKlass java/lang/invoke/VarHandle +instanceKlass java/lang/invoke/MethodHandle +instanceKlass jdk/internal/reflect/CallerSensitive +instanceKlass java/lang/annotation/Annotation +instanceKlass jdk/internal/reflect/FieldAccessor +instanceKlass jdk/internal/reflect/ConstantPool +instanceKlass jdk/internal/refl \ No newline at end of file diff --git a/src/main/java/CarLocation.java b/src/main/java/CarLocation.java deleted file mode 100644 index 037419c0b..000000000 --- a/src/main/java/CarLocation.java +++ /dev/null @@ -1,16 +0,0 @@ - -public class CarLocation { - private static final int ADVANCE_RANDOM_NUMBER = 4; - private final StringBuffer stringLocation = new StringBuffer("-"); - - public StringBuffer getCarLocation(int randomNumber) { - if (randomNumber >= ADVANCE_RANDOM_NUMBER) { - this.stringLocation.append("-"); - } - return this.stringLocation; - } - - public StringBuffer getStringLocation() { - return this.stringLocation; - } -} diff --git a/src/main/java/CarStorage.java b/src/main/java/CarStorage.java deleted file mode 100644 index b48b1404b..000000000 --- a/src/main/java/CarStorage.java +++ /dev/null @@ -1,15 +0,0 @@ -import java.util.Collections; -import java.util.List; - -public class CarStorage { - - private final List cars; - - public CarStorage(List cars) { - this.cars = cars; - } - - public List getCars() { - return Collections.unmodifiableList(cars); - } -} diff --git a/src/main/java/Game.java b/src/main/java/Game.java deleted file mode 100644 index 9e7be3f57..000000000 --- a/src/main/java/Game.java +++ /dev/null @@ -1,72 +0,0 @@ -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -public class Game { - - private final Scanner scanner = new Scanner(System.in); - private final List cars = new ArrayList<>(); - private final List carLocationArrayList = new ArrayList<>(); - private CarStorage carStorage; - private List winners = new ArrayList<>(); - - - public void gameStart() { - String[] split = getCarNames(); - int gameCount = getGameCount(); - int tmp = gameCount; - int max = 0; - - while (gameCount > 0) { - carStorage = inputCars(split); // 자동차 3개를 입력받은 이름을 가지고 생성해서 일급컬렉션에 저장한다 - for (int loopCount = 0; loopCount < split.length; loopCount++) { - if (gameCount == tmp) { - CarLocation carLocation = new CarLocation(); - carLocationArrayList.add(carLocation); - System.out.println(carStorage.getCars().get(loopCount).getCarName() + " : " + carLocationArrayList.get(0).getStringLocation()); - } else { - System.out.println(carStorage.getCars().get(loopCount).getCarName() + " : " + carLocationArrayList.get(loopCount).getCarLocation(getRandomNumber(loopCount)) ); - } - - } - for (int i = 0; i < split.length; i++) { - if (max < carLocationArrayList.get(i).getStringLocation().length()) { - max = carLocationArrayList.get(i).getStringLocation().length(); - } - } - - cars.clear(); - gameCount--; - } - - for (int i = 0; i < split.length; i++) { - if (carLocationArrayList.get(i).getStringLocation().length() == max) { - System.out.printf("%s",carStorage.getCars().get(i).getCarName()+ ", "); - } - } - System.out.print("가 최종 우승했습니다"); - } - - private int getRandomNumber(int i) { - return carStorage.getCars().get(i).getRandomNum(); - } - - private int getGameCount() { - System.out.println("시도할 회수는 몇회인가요?"); - return scanner.nextInt(); - } - - private String[] getCarNames() { - System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표를 기준으로 구분)"); - String line = scanner.nextLine(); - return line.split(","); - } - - private CarStorage inputCars(String[] split) { - for (int i = 0; i < split.length; i++) { - Car car = new Car(split[i]); - cars.add(car); - } - return new CarStorage(cars); - } -} diff --git a/src/main/java/Car.java b/src/main/java/game/Car.java similarity index 56% rename from src/main/java/Car.java rename to src/main/java/game/Car.java index f9174fafe..ad5cae12a 100644 --- a/src/main/java/Car.java +++ b/src/main/java/game/Car.java @@ -1,37 +1,42 @@ +package game; + import java.util.regex.Pattern; public class Car { private static final Pattern CAR_NAME_PATTERN = Pattern.compile("^[a-zA-Z]*$"); private static final int CAR_MAX_LENGTH = 5; private final String carName; - private final int randomNum; + private static final int ADVANCE_RANDOM_NUMBER = 4; + private final StringBuffer stringLocation = new StringBuffer("-"); public Car(String carName) { if (carName.length() > CAR_MAX_LENGTH) { throw new IllegalArgumentException("자동차 이름의 길이는 5자리를 넘을수 없다"); } - if (isNotMatchingCarNamePattern(carName)) { + if (isNotMatchCarNamePattern(carName) || carName.isBlank()) { throw new IllegalArgumentException("자동차 이름은 영문만 올수있습니다"); } this.carName = carName; - this.randomNum = generateRandomNumber(); } - private int generateRandomNumber() { - return (int) (Math.random() * 10); + public StringBuffer advanceCarLocation(int randomNum) { + if (randomNum >= ADVANCE_RANDOM_NUMBER) { + return this.stringLocation.append("-"); + } + return this.stringLocation; } - private boolean isNotMatchingCarNamePattern(String carName) { - return !CAR_NAME_PATTERN.matcher(carName).matches(); + public String getCarName() { + return carName; } - public int getRandomNum() { - return randomNum; + private boolean isNotMatchCarNamePattern(String carName) { + return !CAR_NAME_PATTERN.matcher(carName).matches(); } - public String getCarName() { - return carName; + public StringBuffer getStringLocation() { + return stringLocation; } } diff --git a/src/main/java/game/Game.java b/src/main/java/game/Game.java new file mode 100644 index 000000000..bfd29dc91 --- /dev/null +++ b/src/main/java/game/Game.java @@ -0,0 +1,32 @@ +package game; + +import game.storage.CarStorage; +import game.util.Util; + +import java.util.Scanner; + +public class Game { + + private final Scanner sc = new Scanner(System.in); + private CarStorage carStorage; + + public void gameStart() { + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표를 기준으로 구분)"); + String[] splitCarNames = sc.nextLine().split(","); + + System.out.println("시도할 회수는 몇회인가요?"); + int gameCount = sc.nextInt(); + + System.out.println("실행 결과"); + Util util = new Util(splitCarNames); + ResultView resultView = new ResultView(splitCarNames,gameCount); + + while (gameCount > 0) { + carStorage = util.addCarsToCarStorage(); + resultView.print(gameCount, carStorage); + System.out.println(""); + gameCount--; + } + resultView.findWinner(splitCarNames,carStorage); + } +} diff --git a/src/main/java/Main.java b/src/main/java/game/Main.java similarity index 89% rename from src/main/java/Main.java rename to src/main/java/game/Main.java index 784b14342..8c1632f82 100644 --- a/src/main/java/Main.java +++ b/src/main/java/game/Main.java @@ -1,3 +1,5 @@ +package game; + public class Main { public static void main(String[] args) { Game game = new Game(); diff --git a/src/main/java/game/ResultView.java b/src/main/java/game/ResultView.java new file mode 100644 index 000000000..64ac31896 --- /dev/null +++ b/src/main/java/game/ResultView.java @@ -0,0 +1,64 @@ +package game; + +import game.storage.CarStorage; + +public class ResultView { + + private int max =0; + private final int initialGameCountValue; + private final StringBuffer answer = new StringBuffer(""); + private final String[] split; + + public ResultView(String[] split, int initialGameCountValue) { + this.split = split; + this.initialGameCountValue = initialGameCountValue; + } + + public void print(int gameCount, CarStorage carStorage) { + for (int i = 0; i < split.length; i++) { + if (initialGameCountValue == gameCount) { + System.out.println(carStorage.getCarName(i) + " : " + carStorage.getNotAdvanceCar(i)); + continue; + } + System.out.println(carStorage.getCarName(i) + " : " + carStorage.getAdvanceCar(i)); + calculateMaxValue(carStorage, i); + } + } + + public void findWinner(String[] split, CarStorage carStorage) { + for (int i = 0; i < split.length; i++) { + if (isWinnerLength(carStorage, i)) { + answer.append(carStorage.getCarName(i)); + } + } + printWinner(); + } + + private void calculateMaxValue(CarStorage carStorage, int i) { + if (isOverMaxLocation(carStorage, i)) { + max= carStorage.getNotAdvanceCar(i).length(); + } + } + + private boolean isOverMaxLocation(CarStorage carStorage, int i) { + return carStorage.getNotAdvanceCar(i).length() > max; + } + + private void printWinner() { + for (int i = 0; i < answer.length(); i++) { + System.out.print(answer.charAt(i)); + if (isNotFinalSequence(i)) { + System.out.print(","); + } + } + System.out.print("가 최종 우승했습니다"); + } + + private boolean isNotFinalSequence(int i) { + return i != answer.length() - 1; + } + + private boolean isWinnerLength(CarStorage carStorage, int i) { + return carStorage.getNotAdvanceCar(i).length() == max; + } +} diff --git a/src/main/java/game/storage/CarStorage.java b/src/main/java/game/storage/CarStorage.java new file mode 100644 index 000000000..5846c54f1 --- /dev/null +++ b/src/main/java/game/storage/CarStorage.java @@ -0,0 +1,33 @@ +package game.storage; + +import game.Car; + +import java.util.Collections; +import java.util.List; + +import static game.util.Util.generateRandomNumber; + +public class CarStorage { + + private final List cars; + + public CarStorage(List cars) { + this.cars = cars; + } + + public List getCars() { + return Collections.unmodifiableList(cars); + } + + public String getCarName(int number) { + return getCars().get(number).getCarName(); + } + + public StringBuffer getAdvanceCar(int number) { + return getCars().get(number).advanceCarLocation(generateRandomNumber()); + } + + public StringBuffer getNotAdvanceCar(int number) { + return getCars().get(number).getStringLocation(); + } +} diff --git a/src/main/java/game/util/Util.java b/src/main/java/game/util/Util.java new file mode 100644 index 000000000..b2bc4b9dc --- /dev/null +++ b/src/main/java/game/util/Util.java @@ -0,0 +1,28 @@ +package game.util; + +import game.Car; +import game.storage.CarStorage; + +import java.util.ArrayList; +import java.util.List; + +public class Util { + private final String[] split; + private final List cars = new ArrayList<>(); + + public Util(String[] split) { + this.split = split; + } + + public CarStorage addCarsToCarStorage() { + for (String s : this.split) { + Car car = new Car(s); + cars.add(car); + } + return new CarStorage(cars); + } + + public static int generateRandomNumber() { + return (int) (Math.random() * 10); + } +} diff --git a/src/test/java/CarLocationTest.java b/src/test/java/CarLocationTest.java index b8bfebbdf..ffe474d32 100644 --- a/src/test/java/CarLocationTest.java +++ b/src/test/java/CarLocationTest.java @@ -1,3 +1,4 @@ +import game.Car; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -5,19 +6,17 @@ class CarLocationTest { + Car car = new Car("pobi"); + @Test @DisplayName("랜덤값이 4이상일때 -가 하나 추가된다 : --출력") void location_MoreThan_2_Then_AddStringBuffer() { - CarLocation carLocation = new CarLocation(); - StringBuffer stringCarLocation = carLocation.getCarLocation(4); - assertEquals("--", stringCarLocation.toString()); + assertEquals("--",car.advanceCarLocation(4).toString() ); } @Test @DisplayName("랜덤값이 4미만일때는 초기값(-) 그대로를 출력한다 : -출력") void location_MoreLess_2_Then_InitStringBuffer() { - CarLocation carLocation = new CarLocation(); - StringBuffer stringCarLocation = carLocation.getCarLocation(3); - assertEquals("-", stringCarLocation.toString()); + assertEquals("-", car.advanceCarLocation(3).toString()); } } diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java index b6f1928cf..93c2843b8 100644 --- a/src/test/java/CarTest.java +++ b/src/test/java/CarTest.java @@ -1,5 +1,8 @@ +import game.Car; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.junit.jupiter.api.Assertions.*; @@ -13,14 +16,12 @@ void carNameLength_IsExceed_Then_Exception() { }); } - @Test - @DisplayName("자동차 이름은 공백이거나 null 일수 없음") - void carName_isEmptyOrNull_Then_Exception() { + @ParameterizedTest + @ValueSource(strings = {" ","","a, b, c"}) + @DisplayName("자동차 이름은 공백이 포함될수 없음") + void carName_isEmptyOrNull_Then_Exception(String carName) { assertThrows(IllegalArgumentException.class, () -> { - inputCarName(" "); - inputCarName(null); - inputCarName(""); - inputCarName("a, b, c"); + inputCarName(carName); }); } From b89fbb82ec187951f6a6d60af6aaad24d363b60b Mon Sep 17 00:00:00 2001 From: "https://github.com/youngreal" Date: Tue, 28 Jun 2022 17:37:34 +0900 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20=EA=B3=B5=EB=B0=B1=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/game/Car.java | 1 - src/main/java/game/Game.java | 1 - src/main/java/game/ResultView.java | 1 - src/main/java/game/storage/CarStorage.java | 1 - src/test/java/CarLocationTest.java | 1 - 5 files changed, 5 deletions(-) diff --git a/src/main/java/game/Car.java b/src/main/java/game/Car.java index ad5cae12a..4c960d9a9 100644 --- a/src/main/java/game/Car.java +++ b/src/main/java/game/Car.java @@ -17,7 +17,6 @@ public Car(String carName) { if (isNotMatchCarNamePattern(carName) || carName.isBlank()) { throw new IllegalArgumentException("자동차 이름은 영문만 올수있습니다"); } - this.carName = carName; } diff --git a/src/main/java/game/Game.java b/src/main/java/game/Game.java index bfd29dc91..34708e78d 100644 --- a/src/main/java/game/Game.java +++ b/src/main/java/game/Game.java @@ -6,7 +6,6 @@ import java.util.Scanner; public class Game { - private final Scanner sc = new Scanner(System.in); private CarStorage carStorage; diff --git a/src/main/java/game/ResultView.java b/src/main/java/game/ResultView.java index 64ac31896..2bce0b02a 100644 --- a/src/main/java/game/ResultView.java +++ b/src/main/java/game/ResultView.java @@ -3,7 +3,6 @@ import game.storage.CarStorage; public class ResultView { - private int max =0; private final int initialGameCountValue; private final StringBuffer answer = new StringBuffer(""); diff --git a/src/main/java/game/storage/CarStorage.java b/src/main/java/game/storage/CarStorage.java index 5846c54f1..4711c24e4 100644 --- a/src/main/java/game/storage/CarStorage.java +++ b/src/main/java/game/storage/CarStorage.java @@ -8,7 +8,6 @@ import static game.util.Util.generateRandomNumber; public class CarStorage { - private final List cars; public CarStorage(List cars) { diff --git a/src/test/java/CarLocationTest.java b/src/test/java/CarLocationTest.java index ffe474d32..d8fde952c 100644 --- a/src/test/java/CarLocationTest.java +++ b/src/test/java/CarLocationTest.java @@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class CarLocationTest { - Car car = new Car("pobi"); @Test