У меня есть апплет, который делает запрос на сервлет. На сервлета это с помощью PrintWriter, чтобы написать ответ обратно апплета:Проблема обработки больших данных с использованием апплета-сервлета
out.println("Field1|Field2|Field3|Field4|Field5......|Field10");
Есть около 15000 записей, поэтому out.println() запускается на выполнение около 15000 раз.
Проблема в том, что, когда апплет получает ответ от сервлета, для обработки записей требуется около 15 минут. Я разместил System.out.println, и обработка приостановлена примерно на 5000, а затем через 15 минут она продолжает обработку, а затем ее завершается.
Неужели кто-нибудь сталкивался с подобной проблемой? Сервлет занимает около 2 секунд. Похоже, что браузер/апплет слишком медленный, чтобы обрабатывать записи.
Это код апплета. Иногда он просто останавливается на первом System.out и иногда останавливается на втором System.out.
while ((line = in.readLine()) != null) {
System.out.println("Reading from stream....");
datavector.add(line);
System.out.println("Vector size="+datavector.size()+" Line added="+line);
}
Любые идеи оценили.
Спасибо.
Привет, обработка скважины останавливается около 5000 и затем после 15 минут она начинается снова. Итак, почему обработка останавливается? Что делает Java? Есть ли способ улучшить производительность? – Marquinio
Я предполагаю, что после того, как около 5000 записей система пытается GC некоторые неиспользуемые объекты. Я думаю, что в браузере IE, если вы открываете консоль java, у нее есть команды для отображения использования памяти и т. Д. Так что вы можете попробовать. Кроме того, просто определите основной метод в вашем апплете и запустите его как приложение java и посмотрите, останавливается ли около 5000 записей. Возможно, это даст вам некоторое представление о том, связана ли проблема с браузером или кодом в целом. Дайте нам знать, что вы найдете. – prashant
Хорошо, я получил эту работу на прошлой неделе. Проблема заключалась в том, что код выполнял очень тяжелые манипуляции с строками. Внутри вложенных циклов код делал такие вещи, как str = str + "name1" + "name2". Переключившись на StringBuffer, время обработки прошло от 20 минут до 15 секунд !!! Спасибо за все ваши ответы. – Marquinio