Law*_*Dol 5 java user-interface memory-management
我有一个用于记录我的工作活动的Java应用程序.因为我每天都打开它,所以最初关心我选择语言的一件事就是它会使用的内存量.
令人高兴的是,在Windows XP下,它通常在最小化时消耗大约5 MB,在最大化时消耗大约12 MB,并且愉快地运行-Xmx5M(根据Windows任务管理器的内存消耗).
当我用更新的硬件升级我的家用电脑,同时升级到Windows 7 64(虽然我安装并使用32位JVM)时,我立即注意到此应用程序的JVM现在报告68 MB +总是.. .这就是用-Xmx5M -Xss16K,根据任务管理器的"工作组".
旧机器和新机器都有4 GB的RAM,其中512 MB用于视频.两者都在运行Java 6的最新版本 - 关于WinXP的更新15,现在为Win7更新24.磁盘上的应用程序占用量为12 K类70 K. 此外,我的工作计算机仍然是Windows XP,运行Java 6_24,并且它显示了大约12 MB这个相同的应用程序 - 并且相同我的意思是字面意思,因为这两个系统是同步的所有我的开发工具.
作为一名开发人员,我需要了解为什么我的应用程序似乎会扼杀这么多内存.
任何人都可以对此有所了解,并建议如何有意义地减少Java 6应用程序的内存占用量?
编辑
答案可能是过度的PermGen大小.根据JVisualVM,我有一堆:
大小:5.2 MB,使用:4.3 MB(峰值)和分配6.2 MB.
但对于PermGen
大小:12.5 MB,使用:4.6 MB(峰值)和分配67.1 MB.

那么,Win 7中的任务管理器中显示的68 MB是否可以简单地请求但是未分配的虚拟内存?
编辑2
将PermGen降低到12 MB对进程RAM没有影响,但JVisualVM确实显示它减少了(显然12 MB构成了某种最小值,因为低于此值对JVVM没有影响).