| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > java.lang.OutOfMemoryError |
| Автор: rrrookie 20.12.2006, 17:47 |
| Привет! Работаю с Веб Севисами на Аксис2. Когда запускаю метод сервисов который считывает много инофрмации из БД, вылетает ЕТО -> Exception in thread main java.lang.OutOfMemoryError С Аксисом работаю через Томкат6. ЕстЬ решение тут -> http://forum.java.sun.com/thread.jspa?threadID=636872&messageID=3773026 Но как то не оченЬ работает.... Кто нитЬ может конкретно пояснитЬ: КАК УВЕЛИЧИТЬ памятЬ JAVA ? JAVA -X - там всё описано, но не работает... Спасибо |
| Автор: kkorsakoff 20.12.2006, 18:24 |
| Различными -X параметрами. Скажи на какой конфигурации у тебя сейчас работает сервер. И с какими параметрами запускаешь томкат. Точнее виртуальную машину. Кстати java.lang.OutOfMemoryError они ведь тоже разные бывают. |
| Автор: rrrookie 20.12.2006, 18:34 |
| Чтыо значит :"на какой конфигурации у тебя сейчас работает сервер" Томкат 5.5.17 Добавляю параметр -Xmx512Mв переменную окружения JAVA_OPTS и запускаю startup.bat |
| Автор: w1nd 20.12.2006, 22:51 |
Добавьте к нему "-XX:PermSize=96m -XX:MaxPermSize=128m". Что получится? |
| Автор: kkorsakoff 21.12.2006, 01:35 |
| Я имел ввиду сколько оперативки доступно вообще, чтоб не забить всю память томкатом |
| Автор: rrrookie 21.12.2006, 11:36 |
| Привет! Допустим что количество памяти не ограничено... На сервере 2Гб RAMa... И JAVA_OPTS = -Xmx512M -XX:PermSize=96m -XX:MaxPermSize=128m Тоже не помогло... Не получается увеличитЬ JVM heap size... |
| Автор: kkorsakoff 21.12.2006, 14:48 |
| Откуда ты понимаешь, что не получается увеличить хип? Каким образом берешь эту информацию? При вылете jvm должна создавать файл hs_err_pid<process id>.log Туда же пишется состояние памяти. Может туда глянем? |
| Автор: rrrookie 22.12.2006, 13:10 |
| OK, спасибо за помощ ;) УдалосЬ решитЬ проблему |
| Автор: KostenkoSergey 28.12.2006, 16:12 |
| а как это должно помочь ? как решил проблему - интересно. |
| Автор: tmp13 20.2.2007, 13:09 | ||
| всего у меня 512 оперативки!! -Xmx512M указал такое в опциях Jdevelopera
(это часть кода... там всё сложнее сервлет процессы... и т.д... на запись 14 мегабайт в StringBuffer его хватает 16 всё облом...) java.lang.OutOfMemoryError выдавать перестал... но толку мало доходит до второй строчки... съедается 1.30 гига оперативки соответственно уже с диска тоже... и всё диск трещит неумолимо минут 10 ждал пришлось завершить процесс..((... с чем это связанно?? т.е. есть шанс что через час что-то изменится?? или это уже без вариантов будет висеть? |
| Автор: Tony 20.2.2007, 13:30 |
| Увели4ение памяти это не решение проблеми. Всего лишь кастыль. Нужно данные подгружать по кускам. Как это реализовать это другой вопрос. |
| Автор: tmp13 20.2.2007, 13:33 | ||
дело в том что с инета скачивается файл в формате zip потом раззиповывается следующим образом:
и всё это дело должно происходить в памяти:\ по кускам... нет даже не знаю как это реализовать в данном случае...(( |
| Автор: tux 20.2.2007, 13:42 |
А почему его во временный файл не сохранить раззиповывать после того, как он целиком загружен? Вообще способов тьма и делать это в памяти - пожалуй самый худший. |
| Автор: tmp13 20.2.2007, 13:45 |
| потому что всё это дело вполне может быть будет крутиться на разных OracleAS конечно думаю можно для каждой системы свой путь... а какие ещё способы есть?) |
| Автор: Tony 20.2.2007, 13:47 | ||
Как я понимаю ты распоковываешь zip в катором текстовые файлы и их содержимое грузишь в StringBuffer. Надо по кускам показывать ползователю. Он двинул scrollbar вниз или вверх данные загрузились,НО НЕ ВСЁ СРАЗУ!!!!!!. Это тоже самое 4то копировать файлы загрузив сразу в массив байтов равний размеру файла. :\ |
| Автор: tmp13 20.2.2007, 13:49 |
| нет в zip файле содержится один dbf файл который как это сказать парсится DBFReadrом и посторчно инсертится в базу! |
| Автор: tux 20.2.2007, 13:55 | ||
Тогда я не понимаю зачем тебе вообще буфер в памяти. Я бы сохранил на диск весь файл, а потом уже распаковывал. В любом случае при нынешнем подходе ты рано или поздно огребешь проблемы и никакое увеличение памяти не поможет. |
| Автор: tmp13 20.2.2007, 13:58 |
| ну когда был такой впрос мне сказали что если бы всё было в памяти было бы круто) но видимо не покатит) ладно спасибу перепишу со скидываение на диск) thnx all) |