HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: gc, программирование на java, разработчик java, javaagent, стенд для измерения памяти</p>
1 <p>Теги: gc, программирование на java, разработчик java, javaagent, стенд для измерения памяти</p>
2 <p>Как вы думаете, что общего у следующих вопросов: - Как подписаться на события<strong>GC</strong>и когда эти события приходят? - Сколько у вас в приложении<strong>сборщиков мусора</strong>по умолчанию? - Как инструментировать своё java-приложение и самому написать<strong>javaagent</strong>?</p>
2 <p>Как вы думаете, что общего у следующих вопросов: - Как подписаться на события<strong>GC</strong>и когда эти события приходят? - Сколько у вас в приложении<strong>сборщиков мусора</strong>по умолчанию? - Как инструментировать своё java-приложение и самому написать<strong>javaagent</strong>?</p>
3 <p>Ответ прост: одно из домашних заданий курса<a>"Разработчик Java"</a>. В нём студентам предлагается написать свой<strong>стенд для измерения памяти</strong>, которую занимает объект (любой объект, не только Object).</p>
3 <p>Ответ прост: одно из домашних заданий курса<a>"Разработчик Java"</a>. В нём студентам предлагается написать свой<strong>стенд для измерения памяти</strong>, которую занимает объект (любой объект, не только Object).</p>
4 <h2>Алгоритм выполнения</h2>
4 <h2>Алгоритм выполнения</h2>
5 <p>Выполняется оно следующим образом: 1. Подписываемся на события<strong>GC</strong>- java.lang.management.ManagementFactory.getGarbageCollectorMXBeans(). 2. Запускаем System.gc() - я знаю, что от System.gc() пахнет серой, но мы её не боимся; 3. Ждём, когда придёт уведомление о том, что GC по сигналу System.gc() сработал - ждать придётся два события, потому что у нас два GC: для<strong>young generation</strong>и для<strong>old generation</strong>; 4. Сравниваем память: но не для одного объекта, конечно, а для 50 * 1024 * 1024.</p>
5 <p>Выполняется оно следующим образом: 1. Подписываемся на события<strong>GC</strong>- java.lang.management.ManagementFactory.getGarbageCollectorMXBeans(). 2. Запускаем System.gc() - я знаю, что от System.gc() пахнет серой, но мы её не боимся; 3. Ждём, когда придёт уведомление о том, что GC по сигналу System.gc() сработал - ждать придётся два события, потому что у нас два GC: для<strong>young generation</strong>и для<strong>old generation</strong>; 4. Сравниваем память: но не для одного объекта, конечно, а для 50 * 1024 * 1024.</p>
6 <p>Останется только проверить результат. А зачем ещё нам<strong>инструментирование</strong>?</p>
6 <p>Останется только проверить результат. А зачем ещё нам<strong>инструментирование</strong>?</p>
7 <p>На этом пока всё. Если желаете узнать больше, записывайтесь в новую группу курса<a>"Разработчик Java"</a>или задавайте вопросы в комментариях!</p>
7 <p>На этом пока всё. Если желаете узнать больше, записывайтесь в новую группу курса<a>"Разработчик Java"</a>или задавайте вопросы в комментариях!</p>
8  
8