|
|
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикНа этой странице я попытался найти слово heap - 2 совпадения. Тут же слово perm находится тоже 2 раза. Получается крамольная весЧь - java скрывает структуру памяти. По крайней мере, в доке о поколениях или (составных частях) памяти heap не говорится. Буду рад ссылкам на оф. доку, где мои слова будут опровергнуты. Это по ОраклиНому - попытайтесь, например в доке по Oracle12c найти описание таблицы sys.ltxid_trans. А в TransactionGuard она очень хорошо используется :) Где же можно овладеть этими терминами, как не в первоисточнике? Потому что работа GC она не покрывается спецификацией. GC у разных JVM может работать совершенно по-разному. И может даже вообще без GC. Тема большая. С наскока будет не просто: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 15:51 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Мурзик, И ещё полезных ссылок: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140228.html Кстати, забудьте про yandex. Его зона доминирования заканчивается рунетом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 15:53 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПотому что работа GC она не покрывается спецификацией. GC у разных JVM может работать совершенно по-разному. И может даже вообще без GC. Тема большая. С наскока будет не просто: Получается, что структура памяти - все эти heap (и порожденный им PermGen)/stack у каждой JVM своя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 16:32 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикПолучается, что структура памяти - все эти heap (и порожденный им PermGen)/stack у каждой JVM своя? Да. Можно так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 16:41 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь, нашел доку http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf, буду читать и думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 17:12 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Не забудь посмотреть на дату этого документа :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 17:30 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Я смотрю, здесь пользуются jconsole и visualvm, а java mission center от jrockit кто-нибудь использует, в 8 и даже в последнем update 7 есть. Мне понравился, на eсlipse сделан, смущает только что профайлер надо использовать с аргументами -XX:+UnlockCommercialFeatures -XX:+FlightRecorder? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 17:37 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
maytonНе забудь посмотреть на дату этого документа :) Сразу же посмотрел - он времен Очаковских и... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 17:58 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
0FDсмущает только что профайлер надо использовать с аргументами -XX:+UnlockCommercialFeatures -XX:+FlightRecorder? Правильно смущает . Со второй колонки начинаются платные варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2014, 18:14 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Попутно возник еще один вопрос - может ли GarbageCollector, освобождая память heap, освободить память, занимаемую процессом ОС? В прилагаемом файле эта память обведена красной рамкой. Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 14:47 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикПопутно возник еще один вопрос - может ли GarbageCollector, освобождая память heap, освободить память, занимаемую процессом ОС? Мне кажется это не совсем задача GC. JVM может уменьшит размер кучи, если решит что она излишне велика для насущных задачь. Под Windows раньше была такая бага, что JVM не могла вернуть мапять в ОС. Актуальна ли она сейчас - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 14:53 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Актуальна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 14:54 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Ссылки по теме http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6498735 https://blogs.oracle.com/jonthecollector/entry/the_unspoken_the_why_of ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 14:57 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикАктуальна Пруфлинк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 15:01 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМурзикАктуальна Пруфлинк? Я не знаю, что такое Пруфлинк, посему решил почитать линки и попробовать. Пробовать буду на таком классе - public class TestHeapSize { double[] arrDouble; public TestHeapSize() { int intArrSize=1_000; this.arrDouble=new double[intArrSize]; } static void useMemory() { int maxLoop = (int) 1e4; TestHeapSize[] tstWork = new TestHeapSize[maxLoop]; for (int iLoop=0;iLoop<maxLoop;iLoop++) { tstWork[iLoop]=new TestHeapSize(); } } public static void main(String[] args) { System.out.println(Runtime.getRuntime().maxMemory()); System.out.println(Runtime.getRuntime().freeMemory()); System.out.println("wait 1"); try { Thread.sleep(10_000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } useMemory(); System.out.println(Runtime.getRuntime().maxMemory()); System.out.println(Runtime.getRuntime().freeMemory()); System.out.println("wait 2"); try { Thread.sleep(10_000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.gc(); System.out.println(Runtime.getRuntime().maxMemory()); System.out.println(Runtime.getRuntime().freeMemory()); try { Thread.sleep(10_000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Буду запускать с различными МусороУборщиками (он же GC) и смотреть в TaskManager сколько он ест памяти. тестирую на такой 32-х разрядной jvm (java -version) java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode, sharing) Случай 1 - запускаю с родным GC: java -Xms1240k -Xmx512m TestHeapSize STDOUT: 518979584 971560 wait 1 518979584 26815192 wait 2 518979584 105411552 Память из диспетчера: wait 1 -> 4540 wait 2 -> 99168 Вывод - тут память не освобождается Запуск с ключом -XX:+UseG1GC stdOUT: 536870912 1740240 wait 1 536870912 17509704 wait 2 536870912 1852280 Память (из диспетчера): wait 1 -> 6796 wait 2 -> 109620 / 27592 Вывод - память освобождает Запуск с ключом -XX:+UseParallelGC stdOUT: 477364224 3584488 wait 1 477364224 21186312 wait 2 477364224 104031248 Память (из диспетчера): wait 1 -> 5516 wait 2 -> 119476 / 128496 Память не освобождается Запуск с ключом -XX:+UseParallelOldGC stdOUT: 477364224 3584488 wait 1 477364224 36059400 wait 2 477364224 117573768 Память (из диспетчера): wait1 5604 wait2 120404 / 123048 Заключение: Освобождает память (и то не всю только G1GC). Буду рад конструктивной критике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 15:59 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикБуду рад конструктивной критике. http://www.sql.ru/forum/rules.aspx Рекомендуется: Для повышения удобочитаемости сообщений - пользоваться специальными кодами для выделения слов (b, u, i, color) ( но не злоупотреблять ими ) и тегом форматирования исходных кодов src . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 16:04 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикЗапуск с ключом -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 16:05 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикБуду рад конструктивной критике. Вот. То же самое. Но, какое оформление! http://www.stefankrause.net/wp/?p=14 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 16:07 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМурзикЗапуск с ключом -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy ? Бесполезняк - не чистит: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. С памятью из диспетчера: Код: plaintext 1. Постарался не перестараться с оформлениями - а то за синими деревьями не увидим леса, в который чем дальше, тем непонятнее. И хоть меняй ты мусороуборщика, хоть не меняй ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 16:40 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикБесполезняк - не чистит: А на линухе? МурзикПостарался не перестараться с оформлениями - а то за синими деревьями не увидим леса, в который чем дальше, тем непонятнее. И хоть меняй ты мусороуборщика, хоть не меняй ... Дорогой дневничок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 16:43 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а там в команде ps какой ключ надо указать, чтобы видеть память? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 17:02 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
МурзикЗаключение: Освобождает память (и то не всю только G1GC) Сейчас вот вспомнил как в сериале Симпсоны Нельсон бросает камень в белку и видит что ей больно. И пишет в своём исследовании - "Белки не любят камни". Вот как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 17:05 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
maytonМурзикЗаключение: Освобождает память (и то не всю только G1GC) Сейчас вот вспомнил как в сериале Симпсоны Нельсон бросает камень в белку и видит что ей больно. И пишет в своём исследовании - "Белки не любят камни". Вот как-то так. Я думаю - лучше так: Экспериментатор говорит мухе - лети, и она летит. Затем он отрывает у нее крылья, опять говорит - лети, а муха не летит. Он записывает: Если мухе оторвать крылья, то она оглохнет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 17:26 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Не знаю, что пытается мерять ТС, но (с моей кочки зрения) прекрасно видно, что использование памяти начинается с -Xms, может дорасти до -Xmx ... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. VMM сложнее, чем вам кажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 18:22 |
|
||
|
Мониторинг памяти в Java SE7
|
|||
|---|---|---|---|
|
#18+
Мурзикmaytonпропущено... Сейчас вот вспомнил как в сериале Симпсоны Нельсон бросает камень в белку и видит что ей больно. И пишет в своём исследовании - "Белки не любят камни". Вот как-то так. Я думаю - лучше так: Экспериментатор говорит мухе - лети, и она летит. Затем он отрывает у нее крылья, опять говорит - лети, а муха не летит. Он записывает: Если мухе оторвать крылья, то она оглохнет :) Ну вобщем ты понял что твои выводы это полная лажа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2014, 18:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38693302&tid=2126910]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
242ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 611ms |

| 0 / 0 |
