Blog about Android
-
Как передаются объекты в методы? Что случится с объектом, который мы передали в метод и занулили параметр?
В Java объекты передаются в методы по ссылке (точнее, передается копия ссылки на объект). Это означает, что внутри метода можно изменять состояние объекта, и эти изменения будут видны снаружи метода. Однако если внутри метода параметр будет занулен, только локальная копия ссылки станет null, но сам объект в куче останется неизменным, если на него есть другие…
-
Расскажи про типы ссылок в Java
В Java существует четыре основных типа ссылок: Эти типы ссылок помогают управлять памятью и предотвращать утечки.
-
Что такое jni-reference?
JNI Reference (Java Native Interface Reference) — это ссылка, используемая для взаимодействия между Java кодом и нативным кодом, написанным на C или C++. В JNI используются различные типы ссылок для управления объектами: JNI-ссылки позволяют Java-коду вызывать нативные методы и работать с памятью.
-
Заколлектятся ли две стронг ссылки друг на друга? В каком случае не заколлектятся?
Нет, объекты, которые ссылаются друг на друга через strong-ссылки, не будут автоматически собраны сборщиком мусора (GC), если на них есть живые ссылки от других объектов (например, из стека или кучи). Это создаст циклическую ссылку, но она не станет проблемой для GC, пока хотя бы один объект в цикле имеет ссылку из GC Root (например, из…
-
Как GC понимает, что надо переместить объект из Eden в Old?
GC в Java использует механизм возрастных порогов для перемещения объектов из Eden в Old Generation. Когда объект создается, он размещается в области Eden. Если объект переживает несколько сборок мусора (Minor GC), он перемещается в одну из областей Survivor (S0 или S1). Каждый раз, когда объект переживает сборку мусора в Survivor, его возраст увеличивается. Когда объект…
-
Расскажи про поколения памяти при сборке мусора
В Java модель памяти для сборки мусора делится на несколько поколений:
-
Что такое монитор в Java, как их можно реализовать? Как он реализован по умолчанию?
Монитор — это механизм синхронизации, который используется для управления доступом к общим ресурсам между потоками. Каждый объект в Java имеет связанный с ним монитор, который позволяет управлять многопоточностью. Как работает монитор: Реализация: По умолчанию монитор реализован в JVM, и при вызове синхронизированных методов или блоков объект блокируется, пока поток не завершит выполнение кода.
-
У класса Object есть методы: wait(), notify(), notifyAll(). Для чего они? Как они работают? Какое обязательное условия для их использования?
Методы wait(), notify(), и notifyAll() в классе Object используются для межпоточной синхронизации. Обязательное условие: Эти методы должны вызываться только внутри синхронизированного блока или метода, иначе будет выброшено исключение IllegalMonitorStateException.
-
Бывают ли в Android-е stop-the-world паузы?
Да, в Android могут происходить stop-the-world (STW) паузы во время сборки мусора (Garbage Collection), даже при использовании ART (Android Runtime). Хотя ART использует оптимизированные сборщики мусора, такие как Concurrent Mark-Sweep (CMS) и Generational GC, некоторые этапы сборки мусора, такие как marking phase или heap compaction, могут временно приостановить выполнение всех потоков приложения для корректного освобождения…
-
Какой GC в ART?
В Android Runtime (ART) используется Garbage Collector с рядом оптимизаций, чтобы минимизировать задержки при сборке мусора и повысить производительность: