假设我有一个 Swings Java 应用程序,我设置 min Heap 为 64MB,max Heap 2GB,当用户启动应用程序时,将显示登录屏幕,此时应用程序使用 64MB,对吗?在我的 Windows 7 中,我可以看到 java 应用程序从操作系统的内存资源监视器中分配了 64MB(实际上,它超过了 64MB,因为 JVM 需要一些内存来完成它的任务)。
之后用户做了一些非常繁重的工作,然后应用程序使用 2G。然后用户退出应用程序,再次显示登录屏幕(应用程序尚未关闭)。此时应用程序使用的实际内存为 64MB(假设这是完美的内存管理应用程序),但在 OS 中这个应用程序仍然使用 2G 的 RAM,我可以在 OS 的资源监视器上看到它。
我希望我的应用程序在不需要使用大内存时将内存释放给操作系统。我可以在运行时使用 java 应用程序吗?
我的意思是当我的应用程序需要使用 64MB 内存时,操作系统只给它 64MB,当它需要 2GB 内存时,操作系统给它 2GB,之后它需要 64MB 内存,然后操作系统又给它 64MB,我不希望它浪费 2000MB - 64MB = 1936MB。
我可以这样做吗?
谢谢,