//首先检查程序有没有限入死循环
这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。
跟据网上的答案大致有这两种解决方法:
1、设置环境变量
set JAVA_OPTS= -Xms32m -Xmx512m
可以根据自己机器的内存进行更改。
2、java -Xms32m -Xmx800m className
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)
这个解决问题了。而且执行的速度比没有设置的时候快很多。
如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。
后来在Eclilpse中修改了启动参数,在VM arguments 加入了-Xms32m -Xmx800m,问题解决。
一、java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
二、java.lang.OutOfMemoryError: Java heap space
Heap size 设置
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
很大的web工程,用tomcat默认分配的内存空间无法启动,如果不是在myeclipse中启动tomcat可以对tomcat这样设置:
TOMCAT_HOME/bin/catalina.bat 中添加这样一句话:
set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m
如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m
=============================================
相关推荐
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
### 如何配置Tomcat的JVM虚拟机内存大小:深入解析与最佳实践 #### 引言 在IT领域,特别是Web应用服务器管理中,正确配置Java虚拟机(JVM)的内存大小对于确保应用程序的稳定性和性能至关重要。本文将详细探讨如何...
### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...
在部署Java Web应用时,经常需要根据实际运行需求调整Tomcat服务器的内存配置。本文将详细介绍如何修改Tomcat的内存大小,包括常用的内存参数及其意义,并提供具体的设置方法。 #### 一、理解Tomcat内存参数 在...
标题中的“tomcat 解决Java heap space问题”指的是在运行Apache Tomcat服务器时,由于Java应用程序内存分配不当或资源消耗过大导致的“Java heap space”错误。这个问题通常出现在Java虚拟机(JVM)试图为对象分配...
- 在 `JAVA_OPTS` 变量中添加以下参数以调整 JVM 的内存分配: - `-Xms450m`:设置初始堆内存大小为 450MB。 - `-Xmx750m`:设置最大堆内存大小为 750MB。 - `-Xss4m`:设置线程栈大小为 4MB。 - `-XX:...
Tomcat作为一款广泛应用的Java Servlet容器,其内存管理直接影响到Web应用程序的性能和响应速度。理解并监控这些内存指标可以帮助我们及时发现并解决潜在的内存泄漏问题,从而提高系统效率。 首先,Tomcat自带了一...
默认情况下,Tomcat可能会分配不足的内存,导致性能瓶颈或甚至内存溢出。要调整内存,我们需要修改`catalina.sh`启动脚本。在该文件中,你会看到类似`JAVA_OPTS`的环境变量,它用于传递JVM参数。例如,你可以增加...
8. **性能调优**:Tomcat可以通过调整线程池大小、连接器设置、内存分配等来提高性能。例如,增大`maxThreads`和`minSpareThreads`可以处理更多并发请求。 9. **安全性**:Tomcat提供了多种安全措施,如角色授权、...
Tomcat内存泄漏是Java应用服务器在运行过程中常见的问题,它可能导致系统性能下降,服务不稳定,甚至引发系统崩溃。解决这个问题需要深入理解Tomcat的内存管理机制以及如何诊断和修复内存泄漏。以下是对“tomcat内存...
在Windows Server环境下,Tomcat作为一个Java应用服务器,其内存管理对于服务的稳定性和性能至关重要。当处理大量请求或运行资源密集型应用时,可能需要增加分配给Tomcat的服务内存。 描述中提到的“winserver ...
读者将学习到如何配置Tomcat服务器,包括修改server.xml文件来设置端口、添加虚拟主机,以及调整内存分配以优化性能。 在Java Web项目部署方面,书中涵盖了WAR文件的打包和发布,以及如何在Tomcat中管理Web应用。...
6. **Tomcat性能调优**:包括设置JVM参数以优化内存分配、调整线程池大小、配置连接器以优化网络通信等,以提高Tomcat处理请求的能力和效率。 7. **安全性**:Tomcat支持多种安全机制,如SSL/TLS加密通信、基本认证...
然而,在Tomcat中设置初始内存并不是一件简单的事情,因为Tomcat的启动程序是包装过的,不能直接使用java命令来调整内存的设置。因此,在本文中,我们将介绍如何设置Tomcat的初始启动内存,从而解决Out Of Memory的...
这表明当前分配给Java虚拟机(JVM)的内存不足以支持程序正常运行,即发生了所谓的内存溢出错误。 #### 二、内存溢出原因分析 内存溢出通常是由以下几种情况导致的: 1. **应用程序内存消耗过高**:应用程序中...
### Tomcat JVM内存设置方法详解 #### 一、前言 Tomcat作为一款广泛使用的Java应用服务器,其性能优化一直是开发者关注的重点之一。而在性能优化的过程中,合理设置JVM(Java Virtual Machine)内存是非常关键的一...
1. 调整线程池大小,优化内存分配。 2. 使用更高效的连接器(如NIO或Apr)。 3. 启用GZIP压缩以减少网络传输的数据量。 安全性方面,需关注: 1. 配置SSL/TLS以提供安全的HTTPS连接。 2. 禁用不必要的默认服务和...
在IT领域,特别是Java应用服务器的管理与优化中,合理设置Tomcat的内存参数是确保应用稳定运行的关键步骤之一。本文将围绕“设置Tomcat启动内存大小”这一主题,深入探讨如何通过修改配置文件来调整Tomcat服务器的...