Я бы использовал отдельную ссылку для каждого окна, которую вы можете установить в null, если она вам больше не нужна. Когда больше нет ссылки на объект, сборщик мусора через некоторое время вызовет его деструктор.
Если я правильно понял, у вас есть несколько окон, скажем, n окон, которые какое-то время выполняют свою работу, а затем больше не нужны. Поэтому, когда вы пишете
Window myWindow_1 = new Windowd ();
Window myWindow_2 = new Windowd ();
Window myWindow_3 = new Windowd ();
// ...
Window myWindow_n = new Windowd ();
И если вы хотите, чтобы они оставили память, вы можете просто сделать
myWindow1 = null;
myWindow2 = null;
myWindow3 = null;
//...
myWindow4 = null;
В случае, если это единственные ссылки, которые использовались для связи с объектами Window, они останутся в памяти как не ссылающиеся призраки, и сборщик мусора удалит их через некоторое время.
Для простоты вы можете хранить все эти ссылки в массиве, чтобы избежать присвоения каждому объекту имени. Например:
Window[] myWindows = new Window[n];
for (int i=0; i<n; i++) {
myWindows[i] = new Window();
}
Надеюсь, это поможет:)