`
阅读更多

如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:

Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的

Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m


我使用的服务方式的Tomcat,内存2G,我在Configure Tomcat-》JAVA-》JAVA OPTIONS中的参数设置是:


-Xms500m
-Xmx1024m
-XX:PermSize=64M
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=48m
-Duser.timezone=GMT+08


//首先检查程序有没有限入死循环

这个问题主要还是由这个问题 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

Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则:

  (1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。

  (2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定的方法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。

  (3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器,比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。

  (4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。

  (5)尽早释放无用对象的引用。
大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。

就是说,对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是System.gc()的方法不一定适用,最好使用finallize强制执行或者写自己的finallize方法。

================================================
转载  java.lang.OutOfMemoryError: Java heap space 解决方法 收藏


java.lang.OutOfMemoryError: Java heap space 解决方法

这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个.

1.可以在windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m

2,如果用的tomcat,在windows下,可以在

C:\tomcat5.5.9\bin\catalina.bat  中加上:

set JAVA_OPTS=-Xms64m -Xmx256m

位置在: rem Guess CATALINA_HOME if not defined  这行的下面加合适.

3.如果是linux系统
Linux  在{tomcat_home}/bin/catalina.sh的前面,加
set JAVA_OPTS='-Xms64 -Xmx512'

 

转自:http://blog.sina.com.cn/s/blog_7c76d639010118co.html

分享到:
评论

相关推荐

    Tomcat内存溢出的三种情况及解决办法分析

    在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。本文就介绍了Tomcat内存溢出的三种情况及解决办法分析

    eclipse tomcat启动,内存溢出问题

    eclipse tomcat启动,内存溢出问题

    myeclipse-tomcat jdk内存溢出

    myeclipse-tomcat jdk内存溢出,针对myeclipse做的相应的配置

    tomcat内存溢出解决办法

    Tomcat 内存溢出解决办法 在 Tomcat 服务器中,内存溢出是常见的问题之一,导致服务器崩溃、性能下降等问题。幸运的是,解决方法很简单,我们可以通过调整 JVM 的参数来解决这个问题。 设置环境变量 在 Windows ...

    解决tomcat内存溢出的配置方法

    本篇将详细介绍如何解决Tomcat内存溢出的问题,以及如何进行相应的配置优化。 首先,我们需要理解什么是内存溢出。当一个程序在运行过程中,分配给它的内存不足以存储所有数据时,就会发生内存溢出。在Java环境中,...

    使用MAT分析Tomcat内存溢出

    这通常通过在Tomcat启动参数中添加`-XX:+HeapDumpOnOutOfMemoryError` 和 `-XX:HeapDumpPath=<dump_file_path>` 来实现。当发生OOM时,JVM会自动创建一个heap dump文件。 2. **下载与安装MAT** MAT是Eclipse插件,...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论”涉及了两个关键的IT概念:Tomcat服务器的字符编码问题和Java虚拟机(JVM)内存管理的问题。让我们逐一深入探讨这两个主题。 首先,我们来...

    myeclipse内存溢出问题解决方案

    本文主要讨论如何解决MyEclipse中的内存溢出问题以及相关的Java内存管理知识点。 首先,解决内存溢出问题的关键在于调整JVM的内存配置。在MyEclipse中,可以通过以下路径进行设置:Window > Preferences > ...

    设置Tomcat的初始启动内存

    因此,在本文中,我们将介绍如何设置Tomcat的初始启动内存,从而解决Out Of Memory的问题。 一、理解Java程序的内存分配 在Java程序中,JVM(Java Virtual Machine)会分配一个初始内存和最大内存给应用程序。初始...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    解决Tomcat内存溢出问题的关键在于优化JVM的内存配置。以下是几个关键步骤: 1. **调整JVM启动参数**:你可以通过设置JVM的启动参数 `-Xms` 和 `-Xmx` 来控制Java进程的初始堆大小和最大堆大小。例如,可以将它们...

    myeclipse内存溢出解决方法

    以下是一些解决MyEclipse内存溢出问题的方法: 1. 修改`eclipse.ini`配置文件: MyEclipse的启动配置文件`eclipse.ini`位于MyEclipse安装目录下的特定路径,例如`G:\MyEclipse8.5\Genuitec\MyEclipse 8.5`。在这个...

    tomcat内存溢出总结(2013年)

    以下是对Tomcat内存溢出的三种常见类型的详细解释及解决策略。 1. OutOfMemoryError: Java heap space 这是由于Java虚拟机(JVM)的堆内存不足导致的。堆内存主要存储对象实例,当对象创建过多或内存回收不及时,堆...

    tomcat内存溢出问题.doc

    总之,解决Tomcat内存溢出问题,尤其是PermGen空间溢出,主要通过调整JVM的内存参数和优化类加载策略。同时,监控系统的内存使用情况,及时发现并解决问题,是防止此类问题的关键。在生产环境中,使用监控工具,如...

    解决jetty8内存溢出版本

    6. **升级或切换版本**:如果Jetty 8的内存溢出问题难以解决,可以考虑升级到更稳定或内存管理更优化的版本,如Jetty 9或更高版本,或者考虑使用其他Web服务器,如Tomcat。 7. **使用G1垃圾收集器**:G1(Garbage ...

    tomcat溢出解决建议方案

    在windows server2003操作系统(32bit)下运行tomcat的web App经常发生内存溢出,其规律是发生溢出后重新启动tomcat,再过一个多月仍旧发生,一般来说,造成内存溢出原因是不一样的,当然处理方式也不一样。...

    Tomcat内存溢出分析及解决方法

    本文将深入探讨这两种类型的内存溢出,以及如何通过调整JVM参数来预防和解决这些问题。 首先,JVM内存分为两大部分:堆内存和非堆内存。堆内存主要用来存储对象实例,当开发者创建新的对象时,它们会被分配到堆上。...

    Tomcat虚拟内存

    5. **监控内存使用**:使用`jvisualvm`或`jconsole`等工具可以实时监控Tomcat的内存使用情况,帮助诊断内存溢出等问题。 6. **优化策略**:根据应用的负载和资源限制,应合理设置内存参数。过小可能导致频繁的垃圾...

    Tomcat-启动参数设置

    windows及linux环境下,tomcat启动参数的设置。在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数...

Global site tag (gtag.js) - Google Analytics