【发布时间】:2012-08-08 19:15:48
【问题描述】:
假设我有一个 Swings Java 应用程序, 我将最小堆设置为 64MB,最大堆设置为 2GB, 当用户启动应用程序时,登录屏幕 会显示,此时app使用64MB,对吗? 在我的 Windows 7 中,我可以看到 java 应用程序分配了 64MB 来自操作系统的内存资源监视器(实际上,它超过 64MB,因为 JVM 需要一些内存来执行它的任务)。
之后用户做了一些非常繁重的工作,然后应用程序使用 2G。 然后用户退出应用程序,再次显示登录屏幕(应用程序尚未关闭)。这时应用程序的真实内存 正在使用 64MB(假设这是完美的内存管理应用程序), 但是对于这个应用程序仍然使用 2G 内存的操作系统,我可以在操作系统的资源监视器上看到它。
我希望我的应用程序在不需要使用大内存时将内存释放给操作系统。我可以在运行时使用 java 应用程序吗?
我的意思是当我的应用程序需要使用 64MB 内存时, 然后操作系统只给它64MB, 当它需要 2GB 内存时,操作系统会给它 2GB, 之后它需要 64MB 的内存,然后操作系统再次给它 64MB, 我不希望它浪费 2000MB - 64MB = 1936MB。
我可以这样做吗?
谢谢,
【问题讨论】:
-
查看这个相关问题:stackoverflow.com/q/1481178/562906