我时不时地运行需要大量内存的 eclipse 任务。因此,当任务运行时,jvm 会消耗大约 2-3GB 的 RAM,这是可以的。但是一旦 jvm 占用了该内存,它就不会释放它,并且我遇到了一种情况,堆中已用内存约为 200mb,总堆大小约为 3gb,这确实是不受欢迎的,因为其他程序都渴望内存。
I tried Max/MinHeapFreeRatio
强制 jvm 减少未使用内存消耗的参数。那是我的日食config.ini
file:
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-vm
c:/Program Files/Java/jdk1.6.0_26/bin/javaw.exe
-showlocation
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Duser.name=Michael Nesterenko
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx4096m
-XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=30
但这并没有帮助,我仍然会遇到有大量未使用内存的情况。
Java 在启动时分配最大堆大小作为虚拟内存。当它使用内存时,它会被分配为真正的主内存。它永远不会缩小这个尺寸。释放该内存的唯一方法是程序退出。
Java 将压缩其内存使用量,以便将之前使用过的许多页面交换到磁盘,但是如果再次需要它们,这可能会对性能造成重大影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)