--- aliases: tags: - зрелость/🌱 date: 2023-11-12 zero-link: - "[[../../../garden/ru/meta/zero/00 Java разработка]]" parents: linked: --- Safe Point — это такая точка в выполнении программы, в которой все потоки приложения находятся в известных и устойчивых состояниях, что позволяет [сборщику мусора](../../../garden/ru/dev/java/gc/Garbage%20Collector.md) безопасно анализировать и изменять структуры данных памяти, такие как куча (heap). Во время выполнения программы на Java, потоки могут быть остановлены сборщиком мусора, чтобы обеспечить согласованность данных в памяти. Однако останавливать их можно только в определённых местах, которые называются Safe Points. Это необходимо для того, чтобы гарантировать, что потоки не находятся в середине операции, которая может изменять состояние памяти, и для того, чтобы у сборщика мусора была возможность корректно анализировать достижимые объекты и ссылки между ними. Достижение Safe Point может быть инициировано в следующих ситуациях: 1. Перед выполнением операции сбора мусора. 2. При выполнении некоторых системных вызовов. 3. Перед выполнением длительных операций, которые не должны прерываться. Для приостановки потоков и достижения Safe Point используются различные механизмы в зависимости от конкретной реализации [JVM](JVM.md) и сборщика мусора. Например, потоки могут проверять специальные флаги в контрольных точках в своём коде (polling) или могут быть остановлены с помощью сигналов уровня операционной системы. ![](Pasted%20image%2020231112162050.png) - Синхронизация: останавливает все треды, и убеждается, что все они остановлены - VM Operation. Например, сборка мусора. - Cleanup. Очистка после VM Operatoin ## Команды JVM - -XX:+PrintSafepointStatistics