If doing System.exit(1) from a Swing application, are native resources related to the graphics automatically released ? If I add a myFrame.dispose() with myFrame being the sole
top-level container in the app, can I be sure not to get the annoying behavoiur seen in some
non-java GUI using programs where part of the GUI state will stick frozen to the screen when exiting abruptly ?
- 79
- 5
2 Answers
Everything owned by a process is released when the process exits, unless you are talking about pathological operating systems like Netware 3 & 4.
- 305,947
- 44
- 307
- 483
Top-Level Containers never GC'ed, because missed method finalize()
In this context
JFrame.dispose()do nothing, this container is still present in UsedMemory, un_changed, untill current JVM instance exits,you can returns UsedMemerory by removing it contents, notice remove anything from
ContentPane, otherwise(RootPaneremoved) your container stays translucent, only with visibleToolBarandBorders,all Window are always accesible and re_usable, you can test that by
Window[] allWindows = Window.getWindows();throught whole application lifecyclebefore re_using test container for
isDisplayable()everything important here
then
1) don't create lots of Top-Level containers,
2) re_use container that exist
3) only Object that lost all referencies could be GC'ed