Утечка памяти Java. Как отследить?

Есть таймер, который должен постоянно крутится, возможно утечка из-за него (смущает, то, что я его реализую в конструкторе, возможно надо иначе), не могу определить источник утечки, но выглядит код примерно так:

public class ClockCreater extends JPanel{
	public ClockCreater() {
		service = Executors.newSingleThreadScheduledExecutor();
		service.scheduleWithFixedDelay(new Runnable() {
			@Override
			public void run() {




			}
		}, 0, 1, TimeUnit.SECONDS);
	}
}


Кстати, и второй вопрос сразу, может есть какие приложения, которые позволяют отследить утечку памяти. Спасибо.
  • Вопрос задан
  • 3323 просмотра
Пригласить эксперта
Ответы на вопрос 4
@strelkov
administartor
По второму вопросу используйте Java VisualVM.
Ответ написан
Комментировать
@gurinderu
java developer
Любым профилировщиком. Либо стандартным VisualVM,как писали выше, либо через jprofiler, ну а если вы суровый прогер, то можно и через jmap,jhat, ,jstat.jstack и прочие(тоже стандартная штука)
Ответ написан
Комментировать
Losted
@Losted
Software Architect
Можно MAT'ом посмотреть: https://eclipse.org/mat/
Ответ написан
@Trox
по первому вопросу:
если объект ClockCreater будет создаваться часто, то утечка возможно не только памяти, но и трэдов (например если он создаётся при каждом открытии какого то диалогового окна). Чтобы избежать утечек, после того как объект больше не нужен, надо вызывать shutdown на service.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы