From f10fdf4a2db83c35fbc981b68f4845cdd375fec4 Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Sat, 17 Oct 2020 10:46:34 +0300 Subject: [PATCH 1/9] Deleted .idea and .gradle from index --- .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .gradle/6.3/fileChanges/last-build.bin | Bin 1 -> 0 bytes .gradle/6.3/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes .gradle/6.3/gc.properties | 0 .../6.5/executionHistory/executionHistory.bin | Bin 20071 -> 0 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .gradle/6.5/fileChanges/last-build.bin | Bin 1 -> 0 bytes .gradle/6.5/fileHashes/fileHashes.bin | Bin 18697 -> 0 bytes .gradle/6.5/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes .gradle/6.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 17 -> 0 bytes .gradle/buildOutputCleanup/cache.properties | 2 -- .gradle/checksums/checksums.lock | Bin 17 -> 0 bytes .gradle/vcs-1/gc.properties | 0 .idea/.gitignore | 3 --- .idea/compiler.xml | 10 --------- .idea/gradle.xml | 18 ---------------- .idea/jarRepositories.xml | 20 ------------------ .idea/misc.xml | 7 ------ .idea/vcs.xml | 6 ------ 20 files changed, 66 deletions(-) delete mode 100644 .gradle/6.3/executionHistory/executionHistory.lock delete mode 100644 .gradle/6.3/fileChanges/last-build.bin delete mode 100644 .gradle/6.3/fileHashes/fileHashes.lock delete mode 100644 .gradle/6.3/gc.properties delete mode 100644 .gradle/6.5/executionHistory/executionHistory.bin delete mode 100644 .gradle/6.5/executionHistory/executionHistory.lock delete mode 100644 .gradle/6.5/fileChanges/last-build.bin delete mode 100644 .gradle/6.5/fileHashes/fileHashes.bin delete mode 100644 .gradle/6.5/fileHashes/fileHashes.lock delete mode 100644 .gradle/6.5/gc.properties delete mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 .gradle/buildOutputCleanup/cache.properties delete mode 100644 .gradle/checksums/checksums.lock delete mode 100644 .gradle/vcs-1/gc.properties delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml diff --git a/.gradle/6.3/executionHistory/executionHistory.lock b/.gradle/6.3/executionHistory/executionHistory.lock deleted file mode 100644 index a7604be1ef6e9a790cafe5f2e4f8b638218152b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZRUG;}#Ck+sR10RnOWA&mnv diff --git a/.gradle/6.3/fileChanges/last-build.bin b/.gradle/6.3/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/.gradle/6.3/fileHashes/fileHashes.lock b/.gradle/6.3/fileHashes/fileHashes.lock deleted file mode 100644 index 2b22044621848a8e6f14688644e644e50c0b6932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZP$SDwo3m;F4I0Rl__B^Cou diff --git a/.gradle/6.3/gc.properties b/.gradle/6.3/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/6.5/executionHistory/executionHistory.bin b/.gradle/6.5/executionHistory/executionHistory.bin deleted file mode 100644 index ca603136957a3946fa69672fa1e9609598fd0231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20071 zcmeI)PiWIn90%}p9d(Mbco+`Eiwvi*CH-UCO$Ax$=9K->)jGjLNYmFPTh_#vv~`M3 zWCy`I9S)fY124i*CklEQ{s9jIZ|c>f2T{a>HxV>#8n#gn9qU2l8|cd;@4esey-#1$ zLm)ARX=ZqTV1izm}eOOR=eWy%R5ikZM#43H1~G7&kx+QeSM$Ph7tl0fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZafqy|D z#4x^H_Q!rY#sf&-dBO zg&pB@eP^PHhJr+8Ma_|@WRix(YF65ET(Xp6_n9L@U9rAyF%j<`5_<>xyWLpD4&Lc9 z5T8;_%bY2eR83|rRnOES*P4KTNqBp8!nh&@g>XDO&a4@Ba>5`D&#PKm{!Z#+2M#^` zdGC||;`PDK^^IR&?}}tsM$YQ*!#Q{}9AcfXWr+~1cS$jb&li~Vhrt&11x_q5)* z^x;-b!qy~6#nf&XRJZR7mP*VLz}t-iti3OD2dvw$HshQ_Lzv&C334WH!>lB00Iag zfB*srAbC+xP(l(Q_F9 diff --git a/.gradle/6.5/fileHashes/fileHashes.lock b/.gradle/6.5/fileHashes/fileHashes.lock deleted file mode 100644 index b89035bdbee3e3b6d10f21e051d4d887347333a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZQ}>QJ4zd*P?03=qHu05u&1g#Z8m diff --git a/.gradle/6.5/gc.properties b/.gradle/6.5/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index 125640c0661a242e02c3c8aa44ade74fd4ef2016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZRcxr{wXET`Ur0RkcbB@6>C diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index b774acd..0000000 --- a/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Thu Oct 08 23:16:29 MSK 2020 -gradle.version=6.3 diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock deleted file mode 100644 index 2cf264e3089226e34e453839915ee03153a95c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZR+wZ?0Uv*dYO1}FdkGnxbN diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index c8b5c9a..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 87ca0fc..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index fdc392f..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index b0ec460..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 2f18960bceca04f3d7051f7ea9f96d1309a8fd45 Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Mon, 2 Nov 2020 09:08:59 +0300 Subject: [PATCH 2/9] V 10. Added vim swap files to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 8f242ff..38a19dd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ # Mobile Tools for Java (J2ME) .mtj.tmp/ +# vim swap files +*.swp + # Package Files # *.jar !gradle-wrapper.jar From c944ad2de985304c63f0e88aac06bb03703b8c7f Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Tue, 3 Nov 2020 00:49:34 +0300 Subject: [PATCH 3/9] v11. GC comparision. --- hw04-GCCompare/Conclusions.md | 23 +++++++++++++++++ hw04-GCCompare/build.gradle | 14 +++++++++++ hw04-GCCompare/src/main/java/GCCompare.java | 28 +++++++++++++++++++++ settings.gradle | 1 + 4 files changed, 66 insertions(+) create mode 100644 hw04-GCCompare/Conclusions.md create mode 100644 hw04-GCCompare/build.gradle create mode 100644 hw04-GCCompare/src/main/java/GCCompare.java diff --git a/hw04-GCCompare/Conclusions.md b/hw04-GCCompare/Conclusions.md new file mode 100644 index 0000000..38ccc1d --- /dev/null +++ b/hw04-GCCompare/Conclusions.md @@ -0,0 +1,23 @@ +Запсукал тест из командной строки командой: + +time java -Xms48m -Xmx48m -Xlog:gc=debug:file=./logs/gc-%p-%t.log:tags,uptime,time,level -XX:+UseParallelGC -cp hw04-GCCompare/build/classes/java/main GCCompare + +Получил такие результаты выполнения по времени: + +Usage|Serial|Parallel|G1|Z +---|---|---|---|--- +real|m9.568s|1m42.697s|49m5.777s|24m5.742s +user|8m3.852s|1m40.046s|48m24.503s|23m43.360s +sys|0m0.168s|0m0.076s|0m16.451s|0m2.176s + +Для логов получил такие результаты: + +Parameter|Serial|Parallel|G1|Z +---|---|---|---|--- +Young (кол-во сборок)|56.267ms (8)|125.543ms (8)|-|- +Old(Full) (кол-во сборок)|692.647ms (9)|658.036ms (7)|-|- +Total (кол-во сборок)|749.274ms (17)|783.579ms (15)|-|- + +_Для выделяемого объёма памяти 56Мб G1 проработала более 80 минут, после чего программа была прервана. Поэтому сравнение велось на объёме память 64 мб_ + +Вывод: для Debian с 2 Гб памяти и максимальным возможным значением 494 Мб для HeapSize наиболее производительными будет Parallel. \ No newline at end of file diff --git a/hw04-GCCompare/build.gradle b/hw04-GCCompare/build.gradle new file mode 100644 index 0000000..5cdc26c --- /dev/null +++ b/hw04-GCCompare/build.gradle @@ -0,0 +1,14 @@ +plugins { + id 'java' +} + +group 'ru.otus' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.12' +} diff --git a/hw04-GCCompare/src/main/java/GCCompare.java b/hw04-GCCompare/src/main/java/GCCompare.java new file mode 100644 index 0000000..a45127d --- /dev/null +++ b/hw04-GCCompare/src/main/java/GCCompare.java @@ -0,0 +1,28 @@ +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/* +-Xms48m -Xmx48m -Xlog:gc=debug:file=./logs/gc-%p-%t.log:tags,uptime,time,level -XX:+UseSerialGC +-XX:+UseSerialGC () +-XX:+UseParallelGC +-XX:+UseG1GC +-XX:+UnlockExperimentalVMOptions -XX:+UseZGC + */ + +public class GCCompare { + public static void main(String ... args){ + List dateArray = new ArrayList<>(); + dateArray.add(new Date()); + while (true){ + int currentSize = dateArray.size(); + System.out.println("currentSize is " + currentSize); + for (int i=currentSize-1;i>=currentSize-(currentSize>>1);i--){ + dateArray.remove((int) (Math.random()*dateArray.size())); + } + for (int i = 0; i < currentSize; i++) { + dateArray.add(new Date()); + } + } + } +} diff --git a/settings.gradle b/settings.gradle index 9a32c0b..09480b3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,3 @@ rootProject.name = 'otus_hw' +include 'hw04-GCCompare' From 3684c921cec3db36e6ea8fdfe01aba18538fb283 Mon Sep 17 00:00:00 2001 From: 1121977 <57187986+1121977@users.noreply.github.com> Date: Thu, 5 Nov 2020 09:35:06 +0300 Subject: [PATCH 4/9] Delete A.java --- src/main/java/A.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/main/java/A.java diff --git a/src/main/java/A.java b/src/main/java/A.java deleted file mode 100644 index 6be5562..0000000 --- a/src/main/java/A.java +++ /dev/null @@ -1,5 +0,0 @@ -public class A { - public static void main(String ... args){ - System.out.println("Hello, gradle + git!"); - } -} From 4ac8620e9565382c3f1b5e62840638f30695fcdd Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Thu, 5 Nov 2020 09:45:10 +0300 Subject: [PATCH 5/9] V 12. A.java deleted --- src/main/java/A.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/main/java/A.java diff --git a/src/main/java/A.java b/src/main/java/A.java deleted file mode 100644 index 6be5562..0000000 --- a/src/main/java/A.java +++ /dev/null @@ -1,5 +0,0 @@ -public class A { - public static void main(String ... args){ - System.out.println("Hello, gradle + git!"); - } -} From 5605c7249a6d33c02cd688a924133f1f69ed6f03 Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Thu, 5 Nov 2020 17:52:27 +0300 Subject: [PATCH 6/9] v12. Long insteadof Date. --- hw04-GCCompare/Conclusions.md | 11 +++++++++-- hw04-GCCompare/src/main/java/GCCompare.java | 13 ++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/hw04-GCCompare/Conclusions.md b/hw04-GCCompare/Conclusions.md index 38ccc1d..e491fa4 100644 --- a/hw04-GCCompare/Conclusions.md +++ b/hw04-GCCompare/Conclusions.md @@ -18,6 +18,13 @@ Young (кол-во сборок)|56.267ms (8)|125.543ms (8)|-|- Old(Full) (кол-во сборок)|692.647ms (9)|658.036ms (7)|-|- Total (кол-во сборок)|749.274ms (17)|783.579ms (15)|-|- -_Для выделяемого объёма памяти 56Мб G1 проработала более 80 минут, после чего программа была прервана. Поэтому сравнение велось на объёме память 64 мб_ +_Для выделяемого объёма памяти 56Мб G1 проработала более 80 минут, после чего программа была прервана. Поэтому сравнение велось на объёме память 48 мб_ -Вывод: для Debian с 2 Гб памяти и максимальным возможным значением 494 Мб для HeapSize наиболее производительными будет Parallel. \ No newline at end of file +Вывод: для Debian с 2 Гб памяти и максимальным возможным значением 494 Мб для HeapSize наиболее производительными будет Parallel. + +При использовании Long вместо Date результаты по времени следующие: + Usage|Serial|Parallel|G1|Z + ---|---|---|---|--- + real|4m42.855s|1m45.182s|41m58.634s|18m35.383s + user|4m40.456s|1m43.557s|41m30.208s|18m24.164s + sys|0m0.088s|0m0.056s|0m11.325s|0m0.944s \ No newline at end of file diff --git a/hw04-GCCompare/src/main/java/GCCompare.java b/hw04-GCCompare/src/main/java/GCCompare.java index a45127d..38abdec 100644 --- a/hw04-GCCompare/src/main/java/GCCompare.java +++ b/hw04-GCCompare/src/main/java/GCCompare.java @@ -1,5 +1,4 @@ import java.util.ArrayList; -import java.util.Date; import java.util.List; /* @@ -12,16 +11,16 @@ public class GCCompare { public static void main(String ... args){ - List dateArray = new ArrayList<>(); - dateArray.add(new Date()); + List longArrayList = new ArrayList<>(); + longArrayList.add((long) (Math.random() * Long.MAX_VALUE)); while (true){ - int currentSize = dateArray.size(); + int currentSize = longArrayList.size(); System.out.println("currentSize is " + currentSize); - for (int i=currentSize-1;i>=currentSize-(currentSize>>1);i--){ - dateArray.remove((int) (Math.random()*dateArray.size())); + for (int i=currentSize-1;i>currentSize/2;i--){ + longArrayList.remove((int) (Math.random()*longArrayList.size())); } for (int i = 0; i < currentSize; i++) { - dateArray.add(new Date()); + longArrayList.add((long)(Math.random()*Long.MAX_VALUE)); } } } From 217f199b4b6f839d32bac6aff639b817b16429b2 Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Thu, 5 Nov 2020 17:54:20 +0300 Subject: [PATCH 7/9] v13. Long insteadof Date (Table formatted). --- hw04-GCCompare/Conclusions.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hw04-GCCompare/Conclusions.md b/hw04-GCCompare/Conclusions.md index e491fa4..e4d70d2 100644 --- a/hw04-GCCompare/Conclusions.md +++ b/hw04-GCCompare/Conclusions.md @@ -23,8 +23,9 @@ _Для выделяемого объёма памяти 56Мб G1 прораб Вывод: для Debian с 2 Гб памяти и максимальным возможным значением 494 Мб для HeapSize наиболее производительными будет Parallel. При использовании Long вместо Date результаты по времени следующие: - Usage|Serial|Parallel|G1|Z - ---|---|---|---|--- - real|4m42.855s|1m45.182s|41m58.634s|18m35.383s - user|4m40.456s|1m43.557s|41m30.208s|18m24.164s - sys|0m0.088s|0m0.056s|0m11.325s|0m0.944s \ No newline at end of file + +Usage|Serial|Parallel|G1|Z +---|---|---|---|--- +real|4m42.855s|1m45.182s|41m58.634s|18m35.383s +user|4m40.456s|1m43.557s|41m30.208s|18m24.164s +sys|0m0.088s|0m0.056s|0m11.325s|0m0.944s \ No newline at end of file From 8496791c53508ca1d16f7ad64f75b5b29ad2f118 Mon Sep 17 00:00:00 2001 From: "Renat I. Kashapov" Date: Fri, 6 Nov 2020 00:32:07 +0300 Subject: [PATCH 8/9] v14. []int insteadof Long (Table formatted). Tested with int[256], int[128] and int[64]. --- hw04-GCCompare/Conclusions.md | 22 ++++++++++++++++++++- hw04-GCCompare/src/main/java/GCCompare.java | 11 ++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/hw04-GCCompare/Conclusions.md b/hw04-GCCompare/Conclusions.md index e4d70d2..b629bc6 100644 --- a/hw04-GCCompare/Conclusions.md +++ b/hw04-GCCompare/Conclusions.md @@ -28,4 +28,24 @@ Usage|Serial|Parallel|G1|Z ---|---|---|---|--- real|4m42.855s|1m45.182s|41m58.634s|18m35.383s user|4m40.456s|1m43.557s|41m30.208s|18m24.164s -sys|0m0.088s|0m0.056s|0m11.325s|0m0.944s \ No newline at end of file +sys|0m0.088s|0m0.056s|0m11.325s|0m0.944s + +Разница заметна, но не существенная. Однако это натолкнуло меня на наличие взаимосвязи между размером (атомарного) объекта и производительностью программы, обуславливаемой выбором GC. +В программу были внесены изменения (вместо объектов Long/Date в ArrayList начал заносить различные массивы int), результаты помещены в сводную таблицу (тестирование велось на выделенном объёме 494MB): + +Usage|Serial|Parallel|G1|Z +---|---|---|---|--- +int[256]|21.235s(466607)|10.222s(311071)|29.222s(466607)|122.573s(466607) +int[128]|43.598s(699911)|42.027s(699911)|99.843s(699911)|346.264s(699911) +int[64]|346.264s(1574801)|103.634s(1049867)|2008.708s(1574801)|5109.768s(1574801) + +Таким образом время работы (на фиксированном выделенном объёме памяти) явно зависит от атомарного размера объекта, хотя мне более объективной видится зависимость от общего числа объектов в программе (в скобках приведены максимальные значения размеров ArrayList перед удалением половины объектов, при которых ещё не был достигнут OOM). +На моей машине наиболее оптимальным видится использование ParallelGC с точки зрения времени исполнения программы. Другое дело с точки зрения падения или достижения наибольшего числа объектов в ArrayList (по сути качество работы GC). ParallelGC в 2-х случах из 3-х не достиг показателей остальных GC. По совокупности обоих факторов на моей машине лучшим видится SerialGC. + +Обработка логов для программы с использованием массивов int[128] (этого размера опытного массива удалось достичь всем GC) отражена в таблице: + +Parameter|Serial|Parallel|G1|Z +---|---|---|---|--- +Young (кол-во сборок)|212.054ms (7)|357.272ms (6)|-|- +Old(Full) (кол-во сборок)|1497.610ms (10)|1806.858ms (18)|-|- +Total (кол-во сборок)|1709.664ms (17)|2164.130ms (24)|-|- \ No newline at end of file diff --git a/hw04-GCCompare/src/main/java/GCCompare.java b/hw04-GCCompare/src/main/java/GCCompare.java index 38abdec..3470181 100644 --- a/hw04-GCCompare/src/main/java/GCCompare.java +++ b/hw04-GCCompare/src/main/java/GCCompare.java @@ -10,17 +10,18 @@ */ public class GCCompare { + static final int ARRAY_SIZE = 64; public static void main(String ... args){ - List longArrayList = new ArrayList<>(); - longArrayList.add((long) (Math.random() * Long.MAX_VALUE)); + List intArrayList = new ArrayList<>(); + intArrayList.add(new int[ARRAY_SIZE]); while (true){ - int currentSize = longArrayList.size(); + int currentSize = intArrayList.size(); System.out.println("currentSize is " + currentSize); for (int i=currentSize-1;i>currentSize/2;i--){ - longArrayList.remove((int) (Math.random()*longArrayList.size())); + intArrayList.remove((int) (Math.random()*intArrayList.size())); } for (int i = 0; i < currentSize; i++) { - longArrayList.add((long)(Math.random()*Long.MAX_VALUE)); + intArrayList.add(new int[ARRAY_SIZE]); } } } From 18a29bf92af69cfa6e120c538be774aa329d79fc Mon Sep 17 00:00:00 2001 From: 1121977 Date: Thu, 22 Apr 2021 16:43:55 +0300 Subject: [PATCH 9/9] README update --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c29a8be..6781205 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ -# Примеры для курса "Разработчик Java" в OTUS +Написать приложение, которое следит за сборками мусора и пишет в лог количество сборок каждого типа (young, old) и время которое ушло на сборки в минуту. -Группа 2020-09 +Добиться OutOfMemory в этом приложении через медленное подтекание по памяти (например добавлять элементы в List и удалять только половину). -### Преподаватели -Сергей Петрелевич
-Стрекалов Павел
-Александр Оруджев
-Вячеслав Лапин
-Виталий Куценко
-Дмитрий Коган +Настроить приложение (можно добавлять Thread.sleep(...)) так чтобы оно падало с OOM примерно через 5 минут после начала работы. -Студент: -Kashapov Renat (Кашапов Ренат)
-renat.kashapov@gmail.com \ No newline at end of file +Собрать статистику (количество сборок, время на сборки) по разным GC. + +!!! Сделать выводы !!! ЭТО САМАЯ ВАЖНАЯ ЧАСТЬ РАБОТЫ: Какой gc лучше и почему? + +Выводы оформить в файле Сonclusions.md в корне папки проекта. Результаты измерений сведите в таблицу. + +Попробуйте провести этот эксперимент на небольшом хипе порядка 256Мб, и на максимально возможном, который у вас может быть. + +Критерии оценки: +Система оценки максимально соответсвует привычной школьной: 3 и больше - задание принято (удовлетворительно). ниже - задание возвращается на доработку.