В этой статье представлен метод расчета, сколько занимают объекты космической Java. Это совместно с вами для вашей ссылки. Конкретный контент заключается в следующем
1. Объектная голова
Есть как минимум два слова во главе объекта. Если это массив, то три слова следующие:
II Правила
Во -первых, любой объект выровнен 8 байтов, а свойства хранятся в порядке [long, double], [int, float], [char, short], [byte, boolean] и ссылки. Например:
открытый тест класса {байт a; int b; логический C; длинный d; Объект E;}Если свойства этого объекта хранятся в порядке, пространство, которое нужно заняться, является: голова (8) + a (1) + накладка (3) + b (4) + c (1) + накладка (7) + d (8) + e (4) + накладка (4) = 40. Но в соответствии с этим правилом мы получаем: головную (8) + d (4) + b (4) + a (1) + e (1) + + e (1) + + e (1) + + c (1) + e (1) + + e (1) + e (1) + e (1) + e (1) + b (4) + b (4) + e (1) + e (1) + b (4) + b (4) + e (1) + e (1) + b (4) + b (4) + e (1) + b (4) + b (4) + b (4) + b (4) + b (4) + b (4) + e (1) + e (4) + b (4) + b (4) + b (4). Подкладка (4) = 32. Вы можете видеть, что это экономит много места.
Когда дело доходит до отношений наследования, существует основное правило: во -первых, хранятся члены родительского класса, а затем хранятся участники в подклассе. Например:
класс A {long a; int b; int c;} класс B расширяет {long d;}Порядок и пространство, занятое таким образом, следующие: голова (8) + a (8) + b (4) + c (4) + d (8) = 32. Так что, если атрибутов в родительском классе не хватает восьми байтов? Это дает новое правило: если интервала между последним членом родительского класса и первым членом детского класса недостаточно для 4 байтов, его необходимо расширить до базовой единицы из 4 байтов, например:
Класс a {byte a;} класс B расширяет {byte b;}Тогда пространство, занятое в это время, выглядит следующим образом: голова (8) + a (1) + Padding (3) + B (1) + Padding (3) = 16. Очевидно, что этот метод довольно расточительна, поэтому, если первый член подкласса вдвое или длинный, а родительский класс не использует 8 байтов, JVM будет нарушать правила и заполнять данные меньшего размера в пространство: Например: например: например: например: например: Например: Данные: например: например: например: Данные: Например: данные: JVM и заполняет меньшие данные в пространство:
класс A {byte a;} класс B расширяет {long b; короткий C; байт d;}Пространство, занятое в это время, выглядит следующим образом: голова (8) + a (1) + накладка (3) + c (2) + d (1) + накладка (1) + b (8) = 24.
Выше приведено метод расчета, сколько пространственных объектов Java занимают. Я надеюсь, что для всех будет полезно изучать Java -программирование.