![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zels |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Запускаю задачу для работы с большими массивами (~30млн объектов)
Памяти хватает только на создание 8млн. Максимальный heap -Xmx1110m, больше не может выделить. Установлено 4гб ОЗУ и WindowsXP. JVM последняя (1.6_24) от Oracle. Мне кажется, раньше была JVM, которая использовала 2Gb ОЗУ, но я не помню, что за версия. P.S для справки: на C# программа использовала 1700Мб и создала 28млн объектов. |
|||
|
||||
XoJIoD |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 23.4.2008 Репутация: нет Всего: нет |
Для 64 разрядной java можно выделить больше памяти.
|
|||
|
||||
tonklor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.2.2011 Репутация: нет Всего: нет |
Была аналогичная проблема. Вечерком распишу метод "лечения".
|
|||
|
||||
zels |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
Установил 64-разрядную Java (в Windows 7), чтобы попробовать... Ключ Xmx3500m позволил дойти до 20млн, причем после 15млн очень сильные тормоза. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Завтра вам понадобится 60 млн. Перспективней искать другое архитектурное решение, т.е. разбить данные на порции и обрабатывать параллельно на разных JVM. В grid'е.
|
|||
|
||||
zels |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.7.2006 Репутация: нет Всего: нет |
На части я разбил, мне хватит.
Непонятно, почему Java ест памяти намного больше, чем C#, ведь хранимая информация одинакова. Не хочу спорить Java vs C#, просто в данном случае C# оказался предпочтительнее. Это сообщение отредактировал(а) zels - 26.2.2011, 18:41 |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Пока Вы не привели код, невозможно сказать, что там не так. Ваши слова позволил дойти до 20млн, причем после 15млн очень сильные тормоза несколько не согласуются с принципами работы с массивами, где память выделяется единовременно и ее объем не меняется.
|
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Почему это? выделяется массив под 20млн ссылок на объекты, единовременно. Но основной объем памяти будет тратиться именно на сами экземпляры классов, которые потом будут создаваться и укладываться в этот массив. Вроде все логично. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |