powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Выделение памяти под массивы
9 сообщений из 9, страница 1 из 1
Выделение памяти под массивы
    #33569341
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любой массив объектов в Java хранит ссылки на объекты (какими они ни были эти объекты). отсюда следует что все проинициализированные массивы будут занимать одинаковый объем памяти? (разумеется учитывается только массив ссылок на объекты а не сами проинициализированные объекты):

Код: plaintext
1.
2.
3.
4.
5.
MyObject[] arr_1 = { new  MyObject( 1 ),  new  MyObject( 2 ), ...,  new  MyObject(n)}
File[] arr_2 =  new  File[n];
String[] arr_3 =  new  String[n];

для всех равных n

сколько байт занимает одна ссылка?
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33569352
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на win32 думаю 4
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33569446
Liner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageлюбой массив объектов в Java хранит ссылки на объекты (какими они ни были эти объекты). отсюда следует что все проинициализированные массивы будут занимать одинаковый объем памяти? (разумеется учитывается только массив ссылок на объекты а не сами проинициализированные объекты):

Код: plaintext
1.
2.
3.
4.
5.
MyObject[] arr_1 = { new  MyObject( 1 ),  new  MyObject( 2 ), ...,  new  MyObject(n)}
File[] arr_2 =  new  File[n];
String[] arr_3 =  new  String[n];

для всех равных n

сколько байт занимает одна ссылка?

Может зависит от разрядности платформы где установлена виртуальная машина?
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33570819
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за ответы.
теперь отвечу почему я задал такой вопрос - например есть задача - где необходимо выделить своеобразный КЭШ для объектов произвольного типа. размер КЕШа заранее известен, также известен его максимально-возможный размер.. и в этом случае целесообразнее использовать заранее выделенный массив ссылок на объекты, чем использовать коллекции или списки, т.к. это будет работать гораздо быстрее?
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33571031
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ни думаю, что абгонит arrayList
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33571289
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объекты в Java идентифицируются хэш-кодом (т. е. "ссылка" о которой Вы говорите - это хэш код объекта)
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33572158
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а хешкод - это число int, получается что 4 байта :)
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33576700
grady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объекты в Java НЕ идентифицируются хешкодом.
Правило использования хешкода:если ссылки воззвращяют разный хешкод - они указывают на разные объекты. Все. Если один и тот же - никаких предположений не делается, делается попытка разрешить ссылку. Никто не запрещает везде возвращать например 1. Используется для оптимизации сравнения объектов, т.к. в случае сложной иерархии ссылок сравнение может быть дорогой операцией(надо пройти по всей цепочке, причем что еще хуже ссылки могут оказаться сетевыми или межпроцессными проксями).
Идея полностью заимствована из CORBA образца 1993г.
...
Рейтинг: 0 / 0
Выделение памяти под массивы
    #33577923
unicornmirageспасибо за ответы.
теперь отвечу почему я задал такой вопрос - например есть задача - где необходимо выделить своеобразный КЭШ для объектов произвольного типа. размер КЕШа заранее известен, также известен его максимально-возможный размер.. и в этом случае целесообразнее использовать заранее выделенный массив ссылок на объекты, чем использовать коллекции или списки, т.к. это будет работать гораздо быстрее?

Для реализации кеша стоит посмотреть на слабые ссылки:
Код: plaintext
1.
java.lang.ref.WeakReference
java.util.WeakHashMap

Можно ничего не смотреть, а взять готовую реализацию из апачевского проекта commons-collections:
Код: plaintext
org.apache.commons.collections.map.ReferenceMap
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Выделение памяти под массивы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]