我有一个用于搜索文件的Java桌面应用程序,通常很快就达到了默认堆限制。由于我无法访问将安装该应用程序的所有系统,因此我想在应用程序本身中增加JVM堆大小。有人可以帮助我如何通过编程方式实现吗?
我有一个用于搜索文件的Java桌面应用程序,通常很快就达到了默认堆限制。由于我无法访问将安装该应用程序的所有系统,因此我想在应用程序本身中增加JVM堆大小。有人可以帮助我如何通过编程方式实现吗?
将-Xmx设置为1GB并不意味着JVM在启动时会分配那么多内存。JVM只会分配-Xms(加上开销)直到需要更多的堆空间为止。您是否需要保护用户免受虚拟内存抖动或操作系统内存分配失败?如果不需要,只需将Xmx设置为较大的值即可。请注意,Windows 32位的JVM通常会忽略大于1.2Gig的Xmx设置,因此最好不要请求超过1GB左右以确保安全。
目前没有标准的API可以这样做。
我建议您使用Java Web Start来调用应用程序(在最新的Sun Java 6中可用于本地应用程序),因为它允许您指定这个值。
然后,您可以有三个或四个链接,每个链接都指向完全相同的文件,但具有“Tiny”,“Medium”,“Large”和“Gigantic”堆大小。