Хм, в исходниках openjdk и harmony vm функции reserve/commit/uncommit под linux реализуются через mmap и mprotect. Возможно, я ошибся, и там всегда делается на самом деле явная аллокация памяти.
А оно действительно надо? Последовательно и без пропусков? Просто я знаю волшебный метод быстрого обращения к самому объекту безо всяких специальных индексов. Указатель называется. :) Если пулы фиксированные и влезают в 4GB, то можно хранить сжатый 32-битный указатель (ptr — base), как это делает, например java. Если размер объектов кратен 8, то и до 32 гигов можно пул держать (сдвиг на 3), если кратен 16 — то до 64 гигов и т.д.
Имхо, лучше не сдвиг а отдельный клик (точнее отдельный тык).
Первый тык — если несколько объектов рядом — разводим их по кругу. Все что под — сереет (дисейблится).
Второй тык — либо в один из элементов, либо в серую пустоту для отмены.
Подошло бы не только для ссылок, а для любых выделяемых элементов (например, объектов карты).
Кстати, может еще вращение Земли внесло вклад. При беглом взгляде я его учета не заметил.
Земля за это время поворачивается всего на метр примерно. Но мало ли как оно могло повлиять…
Прошу к посту относиться как к шутке.
Нашел в статье рассчитанные 3d-координаты точек.
Квадратный корень из суммы квадратов разностей координат посчитан верно :).
Пардон, почему-то думал, что у них есть какой-то «нормировочный» поток нормальных частиц.
Но это ничего не меняет — посчитали расстояние по дуге Земли, а нейтрино полетели напрямую.
Да, я тоже эти 18 метров получил. Но это же расчеты для идеально-сферической Земли (в вакууме). А на самом деле кто их знает, какая там реально метрика между их двумя городами и контур пути туннелей.
Т.е. «виртуальный индекс» объекта номер ObjectNum в пуле номер N равен Thread0_PoolSize + Thread1_PoolSize +… Thread<N-1>_PoolSize + ObjectNum.
Если эти виртуальные индексы нужны только на момент сериализации (и в этот момент мы уже ничего больше не аллоцируем), то все ок будет.
Посмотрите «Письма мертвого человека» — вот где сурово.
www.youtube.com/watch?v=YRgNOyCnbqg
Захотелось работу поменять на что-нибудь поактивнее.
Первый тык — если несколько объектов рядом — разводим их по кругу. Все что под — сереет (дисейблится).
Второй тык — либо в один из элементов, либо в серую пустоту для отмены.
Подошло бы не только для ссылок, а для любых выделяемых элементов (например, объектов карты).
Земля за это время поворачивается всего на метр примерно. Но мало ли как оно могло повлиять…
Нашел в статье рассчитанные 3d-координаты точек.
Квадратный корень из суммы квадратов разностей координат посчитан верно :).
Но это ничего не меняет — посчитали расстояние по дуге Земли, а нейтрино полетели напрямую.