Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Не раскрыта очень важная тема, что память может сжирать один тред, а падать с OOMом — другой. Особенно забавно, когда с OOMом падает не готовый к этому сервисный тред, например, который разбирает очередь RPC.
char _dummy[16384]; // make program look biggerЗаранее создать статическую переменную небольшого объема, и когда произошел out of memory, эту переменную очищать перед логгированием
SoftReference. И для неё спецификация как раз гарантирует, что ссылка будет очищена до того, как выбросится OutOfMemoryError.нет никакой гарантии, что между очисткой и логированием успеет пройти сборка и мусора.Либо сборка мусора пройдёт, либо логирование успешно выполнится безо всякой сборки. Аспект многопоточности оставлю в стороне — можно манипулировать размером резерва.
OutOfMemoryError: поймай, если сможешь