TOMCAT 出错:java.lang.OutOfMemoryError: Java heap space If Java runs out of memory, the following error occurs: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space Java heap size can be increased as follows: java -Xms
-Xmx Defaults are: java -Xms32m -Xmx128m 如果你用 win /tomcat/bin/catalina.bat 加上下面的命令 加上下面的命令: set JAVA_OPTS=-Xms32m -Xmx256m 如果你用 unix/linux /tomcat/bin/catalina.sh 加上下面的命令: JAVA_OPTS="-Xms32m -Xmx256m" java.lang.OutOfMemoryError: Java heap space 使用 Java 程序从数据库中查询大量的数据时出现异常: java.lang.OutOfMemoryError: Java heap space 在 JVM 中如果 98%的时间是用于 GC 且可用的 Heap size 不足 2%的时候将抛出此异常信 息。 JVM 堆的设置是指 java 程序运行过程中 JVM 可以调配使用的内存空间的设置.JVM 在启动 的时候会自动设置 Heap size 的值, 其初始空间(即-Xms)是物理内存的 1/64, 最大空间(-Xmx) 是物理内存的 1/4。可以利用 JVM 提供的-Xmn -Xms -Xmx 等选项可进行设置。 例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar 如果 Heap Size 设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC 占 用了更多的时间,而应用分配到的执行时间较少。 Heap Size 最大不要超过可用物理内存的 80%,一般的要将-Xms 和-Xmx 选项设置为相同, 而-Xmn 为 1/4 的-Xmx 值。 Heap size 的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap” 。 还有:Java 堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则: (1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个 临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。 (2)Java 中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的 方法--调用 System.gc(), 但这同样是个不确定的方法。 Java 中并不保证每次调用该方法就一 定能够启动垃圾收集, 它只不过会向 JVM 发出这样一个申请, 到底是否真正执行垃圾收集, 一切都是个未知数。
(3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求, 可以采用 JVM 的缺省选项。否则可以考虑使用有针对性的垃圾收集器,比如增量收集器就 比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考 虑使用并行标记/清除收集器。 (4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是 最重要的,不要让自己的一个小错误导致内存出现大漏洞。
(5)尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变 量在退出活动域(scope)后,自动设置为 null,暗示垃圾收集器来收集该对象,还必须注意该 引用的对象是否被监听,如果有,则要去掉监听,然后再赋空值。 就是说,对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是 System.gc()的 方法不一定适用,最好使用 finallize 强制执行或者写自己的 finallize 方法 Eclipse 中出现 java.lang.OutOfMemoryError: Java heap space 错误 2007-06-12 11:53java.lang.OutOfMemoryError: Java heap space 错误 在 tomcat in 的 catalina.bat 里加 set JAVA_OPTS=-Xms256m -Xmx512m -Djava.awt.headless=true 256 和 512 分别是 MIN 和 MAX 内存 在 eclipse 中的 windows->preferences..->tomcat->jvm..->jvm 那一个文本框里,添加 那一个文本框里,添加-Xms256m -Xmx512m 这样就可以了! 这样就可以了!
点“编辑”
自变量( ) 那一个文本框里添加 :那一个文本框里添加: 缺省 VM 自变量(A) 那一个文本框里添加:-Xms256m -Xmx512m :