Я разрабатывал небольшую утилиту Java, которая использует две платформы: Encog и Jetty для обеспечения функциональности нейронной сети для веб-сайта.
Код «закончен» в том смысле, что он делает все, что ему нужно, но у меня есть некоторые проблемы с использованием памяти. При работе на моей машине для разработки использование памяти колеблется между 4 МБ и 13 МБ, когда приложение выполняет какие-то задачи (обучение нейронных сетей), и самое большее оно использует около 18 МБ. Это очень хорошее использование, и я думаю, что это связано с тем, что я вызываю System.GC () довольно регулярно. Я делаю это, потому что время обработки не имеет значения для меня, но использование памяти имеет значение.
Так что все это прекрасно работает на моей машине, но как только я включаю его в сеть на нашем сервере (общий хостинг Unix с ограничением памяти), он начинает использовать около 19 МБ и увеличивает объем используемой памяти до сотен МБ. , Это те же самые вещи, которые я делал на тестировании. Я полагаю, что единственный способ уменьшить использование памяти - это выйти из приложения и перезапустить его.
Единственное, что я могу сказать, это виртуальная машина Java, на которой она запущена. Я не знаю об этом, и я попытался найти причину, по которой он действует таким образом, но большая часть документации предполагает отличное знание Java и виртуальных машин. Может кто-нибудь, пожалуйста, помогите мне с некоторыми причинами, почему это может происходить, и, возможно, с некоторыми вещами, чтобы попытаться остановить это.
Я рассмотрел использование GCJ для компиляции приложения, но я не знаю, стоит ли уделять этому много времени и поможет ли это на самом деле.
Спасибо за помощь!
- ОБНОВЛЕНИЕ: Разработка на Mac OS 10.6.3 и сервере на Unix OS, но я не знаю что. (Сервер из WebFaction)