Eclipse和tomcat 增加内存

Eclispe:

Eclispe运行时,系统会分配给jvm一个运行内存,这个内存理论设置的最大值为你电脑内存的4分之一,有时会有这样的内存溢出问题

Java.lang.OutOfMemoryError: Java heap space


我们可以先测测自己Eclipse默认设置的运行内存是多少;

public class TestMemory {

    public static void main(String[] args) {

       System. out .println( " 内存信息 :" + toMemoryInfo());

    }

    /**

      * 获取当前 jvm 的内存信息

      */

    public static String toMemoryInfo() {

       Runtime currRuntime = Runtime.getRuntime ();

       int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 / 1024);

       int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024);

       return nFreeMemory + "M/" + nTotalMemory +"M(free/total)" ;

    }

}


现在的电脑配置内存一般都在4G或者更大,因此运行内存可以设置大一些,最小256M,最大512M(或者最小512M,最大1024M),具体的设置方法如下:

一、    修改jdk 使用内存(此方法可行)

找到eclispe 中window->preferences->Java->Installed JRE ,点击右侧的Edit 按钮,在编辑界面中的 “Default VM Arguments ”选项中,填入如下值即可。

-Xms256m -Xmx512m

二、    修改Run Configurations (方法可行)

在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments 参数中的“VM arguments: ”中填入如下值即可。

-Xms256m -Xmx512m

三、    尝试修改Eclipse.ini 文件 (此方法不行)

找到eclipse 目录下的eclipse.ini 文件,修改下面的内容:

-Xms40m

-Xmx512m

修改后重启eclipse ,发现根本不起作用。经过后来查阅一些资料,原来这里设置的最小内存和最大内存是不是给JVM 使用的,这个内存值包含了eclipse 自身使用的内存。

修改完之后,测试,内存显示的确增加了,不过显示的值是245M,接近设置的最小值256m,这个可能是有部分内存使用是隐藏的;

Tomcat:

放在Tomcat的项目那就更容易出现内存溢出了,导入其他人项目,想必都遇到过这个错误

Java.lang.OutOfMemoryError: 
Permanent Generation space,

  PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

那么直接给出解决方法(比较新的eclispe)

在eclispe的servers双击tomcat,进入tomcat配置界面,Eclipse和tomcat 增加内存_第1张图片

Open launch ..,找到Arguments,在最后面加
-Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m,附一个截图

Eclipse和tomcat 增加内存_第2张图片

完美解决!

其他在配置文件加的不说明了,这种方法最方面简单!


你可能感兴趣的:(java)