![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
диапазоны IP адресов стран, нужно их перебирать для выяснения к какой стране относится ip. Для перебора - пропарсить xml с ними (каждый item будет иметь 6 типов данных - страна, ip_start, ip_end и др., поэтому и массив) и поместить в ArrayList, с которым потом и сравнивать. Почему установка VM Options -Xmx1600M не помогает, ей что, для такого массива надо больше 1600 мегабайт?? Это сообщение отредактировал(а) serghd - 28.1.2010, 19:01 |
|||
|
||||
andrew_121 |
|
||||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
да, один из вариантов.
понимаю.
мне тоже интересно ![]() 75к объектов, это нормально. велосипед? кстати в моем варианте кода, получилось создать 100к объектов. просто добавил опцию для ВМ -Xmx128M. того, в сумме создано 800 000 строк. замечу не мало ![]() -------------------- Удалил аккаунт. Прощайте! |
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Сам ArrayList будет занимать около 75 килобайт, остальное твои объекты. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
serghd, почему вы так уверены что дело именно в массиве? Вы профайлер запускали, смотрели, кто именно жрет память?
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
||||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Я говорил про ArrayList, но не про 75к String[]. 2.
спокойно отрабатывает и на 64 Мб. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Этот срабатывает и у меня. Но реальная задача: VM Options: -Xmx512m (запуск нормальный, т.е. было выделено) Код всей программы (для разбора xml используется qt jambi):
Всего 70040 строк. Без "geoIp.add(mas);" 1 секунда работы без ошибок. С ним вылетает. Это сообщение отредактировал(а) serghd - 28.1.2010, 20:07 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
смотрю на код, и не въезжаю...какой же тайный смысл кроется в -
почему бы не воспользоваться классом состоящим их шести полей типа строки? в таком случае, ситуация немного измениться по двум причинам: 1. класс с шестью строками != массив строк. возможно и памяти для него требуется меньше. 2. свойства класса можно назвать внятными именами, соответственно, работать с ним проще. 3. это:
выглядит как-то нелепо, батарею напоминает ![]() в общем, простите новичка, если глупость сказал ![]() Это сообщение отредактировал(а) andrew_121 - 28.1.2010, 21:09 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
serghd |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
потому что результат тот же. На всякий случай:
берутся аттрибуты item'a, батарея будет в любом случае, это не "Random()". У меня такой массив без вылета работает максимум на 25 000 итераций, если без установок. С -Xmx512m вобщем-то тоже самое. Пробовал также делить 75к на 7 частей и пихать их в отдельные Vector'ы, потом группировать в один, то же самое. Это сообщение отредактировал(а) serghd - 28.1.2010, 21:42 |
||||||
|
|||||||
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
дело было именно в xml, либо реализации механизма работы с ним со стороны jambi. Забивает память, что больше 20к строк лучше не запоминать. Попробовал считывать данные из csv-формата (построчно как обычный текстовый файл) и заносить их в ArrayList - всё норм.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ну вот нафига? Есть же SAX/StAX, которые в данной ситуации намного лучше подходят. Да и хранить IP в строке, тоже как минимум "странно". -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
>>Есть же SAX/StAX Я использую DOM, а не SAX и jambi(при том, что весь проект на ней основан) для этого является очень удобным инструментом. Откуда мне было знать, что цикл с ним с более 20к итераций вызовет memory overflow. >>Да и хранить IP в строке, тоже как минимум "странно". А где же их ещё хранить? Там не только один ip. В БД типа mysql?) Парсится всё равно только 1 раз во время загрузки программы. Пример одного нода: <country ip_start="2.6.190.56" ip_end="2.6.190.63" num_ip_start="33996344" num_ip_end="33996351" flag="GB" >United Kingdom</country> Это сообщение отредактировал(а) serghd - 29.1.2010, 14:08 |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
С точки зрения экономии памяти - int для IPv4, или long, тогда будет проще сравнивать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
да, но в любом случае мне придётся конвертировать. Аттрибуты num_ip_start="33996344" и num_ip_end="33996351" содержат числовое представление ip, которое и буду переводить в int для сравнения. А что, можно разве как-то реализовать без конвертирования?
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Я не совсем понял, что такое num_ip_start, что это за число?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |