Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Для придания большего драматизма, все расчеты и цифры будут приводится для 64-х разрядной HotSpot JVM.
Денормализация модели
Используем смещение в свою пользу
Иногда глупо жертвовать процессорным временем ради экономии памяти, учитывая что никакой экономии может и не быть вовсе.
Иногда нету никакого смысла использовать byte вместо int, так как за счет выравнивания разница все равно может нивелироваться.
Замена одного поля Integer на int позволит сэкономить 16 байт памяти на объект.
Ну и напоследок — не используйте тип Boolean.
Но для реальных приложений объем в 4 ГБ не досягаем в виду того, что часть адресного пространства используется для установленных периферийных устройств, например, видео карты.
Поэтому разработчики виртуальных машин решили сэкономить на размере ссылок и ввели опцию -XX:+UseCompressedOops.
Досягаемость 4 Гб зависит ровно от операционной системы и ее настроек. Тот же Windows XP имеет системное ограничение в 2 Гб адресное пространство (3 Гб в более новых версиях при соответствующих настройках). Причина: оптимизация трансляции адресов. В то же время на Linux'ах, если не ошибаюсь, границы уже сломаны и приложения могут использовать все адресное пространство.Не понял про трансляцию. Мы же видимо про 32-битные системы. Но ведь тут «досягаемость» определяется фактически аппаратно, на 32-битной платформе (предположим, intel) приложение не может никак «сломать границы», ну просто физически. Разумеется, линукс или другой тип системы тут непричём. Если про всякие PAE, то они никак не помогают адресовать процессу больше 4гб, конечно же.
Размер Java объектов. Используем полученные знания