![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Привет, всем!
Моё Java-приложение в некоторых случаях должно обрабатывать довольно большие объемы данных. В результате иногда может возникать нехватка heap-памяти. Сейчас эту проблему я решаю JNI-вызовами, которые специально выделяет мне память на базе апишных функций Windows. А вот можно ли как-то средствами самой Джавы захватывать большие куски памяти за пределами heap(a)? -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- 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. |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
LSD, а если не с файлами работать, большие куски данных по сети приходят?
-------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Скыдывай их в файл, и работай по частям. За пределы кучи средствами Java не выбратся.
-------------------- 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. |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Попрорбовал, но производительность приложения упала практически на порядок. Остался при мнении, что JNI-вызовы с помощью которых захватываются участки физической памяти самое оптимальное решение, хотя и платформозависимое... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А почему нельзя просто выделить больше памяти JVM?
-------------------- 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. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Кстати, с файлом (memory mapped) интереснее - должно получиться съесть памяти больше, чем положено программе.
-------------------- ![]() ![]() |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Мой Java-сервер получает, обрабатывает и перенаправляет данные в сети. В штатном режиме получение, обработка и перенаправление данных проходят практически одновременно. Но возможна ситуация, что канал получения значительно быстрее канала, куда идёт перенаправление данных или канал получатель временно не активен. Вот и приходится у себя где-то хранить полученные данные в ожидании, что целевой канал снова станет активным. Вот мы и решили захватывать физическую память нативными методами, чтобы в один прекрасный момент не получить heap memory overload.
Потому что никогда не знаешь, какой объем памяти тебе понадобиться, а он может варьироваться от нескольких килобайт до гигабайта. А стартовать Java-машину с очень большим хипом не очень красиво... Это сообщение отредактировал(а) val - 16.1.2007, 13:06 -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вообще-то можно указать, максимальный объем памяти, и это вовсе не значит что JVM сразу захватит столько памяти. Плюс если использовать не серверную JVM, а клиентскую, то JVM и отдавать память будет. Тогда тем более вам надо использовать диск для временного хранения данных. -------------------- 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. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Это почему же? Параметр Xmx определяет максимальный размер кучи. Упс... уже ответили Это сообщение отредактировал(а) w1nd - 16.1.2007, 13:18 -------------------- ![]() ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |