Я пишу небольшое Java-приложение (мое первое!), Которое на данный момент выполняет лишь несколько вещей. В настоящее время он запускает класс Main, который запускает класс gui (класс, который я написал, расширяющий JFrame, который содержит только JTextArea), класс, который загружает локальный файл через BufferedInputStream, который составляет приблизительно 40 КБ, и класс, который загружает запись из Файл свойств Java.
Все работает чудесно, однако я смотрел диспетчер задач Windows и заметил кое-что, что показалось мне странным. Когда я запускаю приложение, использование оперативной памяти возрастает примерно до 40 МБ, пока оно загружает локальный файл и извлекает из него несколько значений для отображения в JTextArea, что мне кажется нормальным из-за JVM, базовых классов Java и т. Д. Тем не менее, когда приложение завершило загрузку файла, оно просто бездействует, так как в настоящее время у меня больше ничего нет. Пока он бездействует, пока окно активно, объем используемой памяти приложения начинает расти на 10-20 КБ каждую секунду. Это кажется мне странным. Если я нажму на другую программу, чтобы сделать ее неактивным, память все равно будет увеличиваться, но гораздо медленнее (примерно 10 КБ каждые 3-5 секунд).
Я не проверял, насколько далеко он пойдет, но это кажется мне очень странным поведением. Это нормальное поведение Java? Я предполагаю, что возможно, что мой код может быть утечка памяти, но я не уверен, как. Я действительно закрыл BufferedInputStream, который я использую, и я не вижу, что еще может вызвать это.
Извините, если мое объяснение не имеет смысла, но я был бы признателен за любые идеи и / или указатели, которые кто-либо может иметь.
UPDATE:
По предложению я в основном разложил свое приложение до класса Main, который просто вызывает класс gui. Класс gui только расширяет JFrame и устанавливает размер окна, операцию закрытия и видимые свойства. С этими изменениями память все еще растет на 10-20 КБ, но более медленными темпами. Это, в сочетании с другими советами, которые я получил, заставляет меня поверить, что это всего лишь Java. Я буду продолжать играть с ним и сообщу всем, если я найду что-нибудь еще интересное.