I think you are misunderstanding how JSP works. Each JSP file is compiled to a
servlet and runs on the server. The job of a JSP is to generate some text to send to the browser. This text may include HTML, JavaScript or whatever, but that generated text is just sent to the browser. It's up to the browser to decide what to do with the text sent from the server.
A JSP which does not produce something to be sent to the browser is not really a JSP, it's just a funny and cumbersome way of writing a Java class to run on the server. jspDestroy is only called when the compiled JSP servlet is removed from the server, which is likely to be after it has been run hundreds of times. It has nothing to do with the generation of pages, and even less to do with browser windows.
To close a browser window you need to run some JavaScript which has already been sent from the server.