Хранение чрезвычайно больших массивов

1

У меня проблема. Я работаю в Java, Eclipse. Моя программа вычисляет некоторую математическую физику, и мне нужно нарисовать анимацию (пакет Java SWT) процесса (некоторая гидродинамика). Проблема в 2D, поэтому каждая итерация возвращает двумерный массив чисел. Одна итерация занимает довольно много времени и времени, необходимых для изменения итерации с одной итерации на другую, поэтому динамическое отображение изображений, поскольку работа с программами кажется плохой идеей. В этом случае моя идея состояла в том, чтобы хранить трехмерный массив, где третий индекс представляет время и построение анимации при завершении вычислений. Но в этом случае, так как я хочу точно с моей программы, мне нужно много итераций, поэтому программа легко достигает максимального размера массива. Поэтому возникает вопрос: как мне избежать создания такого огромного массива или как избежать ограничений на размер массива? Я думал о создании специального файла для хранения данных, а затем чтения из него, но я не уверен в этом. У тебя есть идеи?

  • 0
    Сколько у тебя памяти? Бьюсь об заклад, вам не хватит памяти, прежде чем вы столкнетесь с ограничениями размера массива. Вы можете попробовать распределенное решение, такое как memcached / redis, но вам нужно будет придумать более умную структуру данных, чем просто массив.
  • 0
    @instop: попробуйте, если это работает, тогда хорошо, иначе приходите снова. По крайней мере, попробуйте.
Показать ещё 4 комментария
Теги:
arrays
modeling
overflow
physics

1 ответ

0

Когда я работал над системой формирования процедурной архитектуры в университете для моей диссертации, я создал небольшие, очень легко читаемые и проанализированные двоичные файлы для рассчитанных данных. Это означало, что данные можно было прочитать в течение приемлемого времени, несмотря на то, что они были довольно большим количеством данных...

Я бы посоветовал сделать то же самое для ваших анимаций... Это может быть полезно хранить, может быть, пять секунд анимации за файл, а затем кэшировать каждый из них, поскольку они уже потребуются...

Кроме того, насколько велики ваши массивы, вы можете увеличить объем памяти, которую JVM сможет выделить, если он не максимальный размер массива, а максимальные ограничения памяти, которые вы нажимаете.

Надеюсь, это поможет, и это не просто мои бред...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню