I found that Windows Virtual Machines also have the Thread issue with memory not being returned to the OS. The code I wrote to fix the problem for OS/2 Java 1.6 also works to fix Windows. Two stub methods are added to Classes to be able to use the new thread pool. Also this thread pool can be passed to dynamically added classes and methods. The other change is that the thread pool needs to be initialized at the beginning and ended at the end of the program. Otherwise your application will never stop. The threads that are put into the thread pool are added with a few lines that replace the way Runnable classes are started.
This is actually working and in production on OS/2, Linux, Widows, AIX and HP.