Escape analysis — это
—
—
—
Таким образом
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏1
Это разные виды ссылок на объекты из java.lang.ref:
🔹 SoftReference —
🔹 WeakReference —
🔹 PhantomReference —
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4👏1
— StackOverflowError
Возникает когда переполняется
— OutOfMemoryError
Возникает когда J
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2❤1
PhantomReference —
Используется для
В отличие от finalize(), это надёжный способ отследить
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏2
WeakReference — это
Если на объект есть только weak references, GC может
WeakReference<Data> weak = new WeakReference<>(data);
data = null;
// GC может удалить объект
Data retrieved = weak.get(); // может вернуть null
Используется в
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2👏2
GC Roots — это
К GC Roots относятся:
—
—
—
—
GC начинает с roots и проходит граф объектов. Всё, что недостижимо из roots —
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1
PhantomReference —
Используется для
В отличие от finalize(), это надёжный способ отследить
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1👏1
WeakReference — это
Если на объект есть только weak references, GC может
WeakReference<Data> weak = new WeakReference<>(data);
data = null;
// GC может удалить объект
Data retrieved = weak.get(); // может вернуть null
Используется в
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1🤔1
Это анализ
→ Scalar replacement — вообще не создавать объект в куче, а разложить его на отдельные поля в регистрах/на стеке. Это снимает нагрузку на GC.
→ Lock elision — убрать синхронизацию, если объект гарантированно не виден другим потокам.
#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3❤2