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的时候。

解决方法

   一、手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(windows系统)或者catalina.sh(unix系统)

  1.windows系统  在 TOMCAT_HOME/bin/catalina.bat 文件 echo Using CATALINA_BASE:   "%CATALINA_BASE%"上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

  2.unix系统 在 catalina.sh 文件 echo "Using CATALINA_BASE:   $CATALINA_BASE"上面或者第一行加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

  或者加入 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

  

  二、如果启动Tomcat的时候是通过MyEclipse启动服务器的话,需要在MyEclipse里面同样设置内存大小

  原图上的文字:-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M  

  

  -Xms64m   -Xmx256m

  

  

1、修改eclipse.ini 
在Myeclipse安装目录下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一个myeclipse.ini配置文件,设置如下: 
-vmargs
-Xmx512m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=64m

2、设置Default VM Arguments 
在myEclipse中,打开Windows-> Preferences->Java->Installed JREs->点击正在使用的JDK->Edit->Default VM Arguments文本框中输入:-Xms64m   -Xmx256m

3、如果是web工程还报内存溢出,可能就要设置tomcat内存。

(1)tomcat的安装根目录%tomcat%bin/catalina.bat文件,SET JAVA_OPTS 一行;

(2)myeclipse配置web服务器配置 Window—Preferences—Myeclipse—Servers—tomcat 5.x—JDK的Optional Java VM arguments配置为:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

4、如果是debug模式运行,需要调整debug的虚拟机参数,因为debug模式的默认内存分配时很少的。

选择Arguments 在 VM arguments里面填写内存值如:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

一般的ini文件设置主要包括以下几项:
-vmargs
-Xms40m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M
以下解释其意思。
-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
                       堆空间剩余小于5%就会警告,建议把这个稍微设
                               大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
     所以若出现问题,首先请调整 -Xms40m:将其设置的小一些,就ok了,1g内存推荐设置为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=256M
-XX:MaxPermSize=512M
其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M

java.lang.OutOfMemoryError: PermGen space有效解决方法的更多相关文章

  1. java.lang.OutOfMemoryError: PermGen space及其解决方法(转载)

    java.lang.OutOfMemoryError: PermGen space及其解决方法 分类: java2007-09-11 12:34 162242人阅读 评论(51) 收藏 举报 gene ...

  2. java.lang.OutOfMemoryError: PermGen space及其解决方法

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...

  3. [转]java.lang.OutOfMemoryError: PermGen space及其解决方法

    原文地址:http://peak.iteye.com/blog/52606 这个问题是我的工程中加入了Birt报表在Linux环境下运行出现的问题,从网上搜索了一下看到这文章发现并不是由于Birt的原 ...

  4. Eclipse+Maven环境下java.lang.OutOfMemoryError: PermGen space及其解决方法

    转自  https://blog.csdn.net/qdgengwenfei/article/details/71455432 java.lang.OutOfMemoryError: PermGen ...

  5. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

    摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen s ...

  6. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小 java.lang.OutOfMemoryError: PermGen space及其解决方法

    Window->Preferences->MyEclipse->Servers->Tomcat x.x->JDK->Optional Java VM argumen ...

  7. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

    有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: PermGen space的错误, 我们知道可以通过jvm ...

  8. Eclipse中启动tomcat: java.lang.OutOfMemoryError: PermGen space的解决方法

    tomcat启动的时候出现这种错误一般是项目引用了太多的jar包,或者反射生成了太多的类,或者有太多的常量池,导致非堆内存中永久保存区域不够,就有可能会报java.lang.OutOfMemoryEr ...

  9. java.lang.OutOfMemoryError: PermGen space错误解决方法

    1. MyEclipse 中报 PermGen space       window--> preferences-->Myclipse-->Servers-->Tomcat- ...

随机推荐

  1. Deep Learning for Information Retrieval

    最近关注了一些Deep Learning在Information Retrieval领域的应用,得益于Deep Model在对文本的表达上展现的优势(比如RNN和CNN),我相信在IR的领域引入Dee ...

  2. FFMpeg for PHP

    PHP使用FFMpeg来转换视频格式.Github上搜索FFMPEG,到https://github.com/PHP-FFMpeg/PHP-FFMpeg. For Windows users : Pl ...

  3. MFC窗口创建、销毁消息流程

    MFC应用程序创建窗口的顺序 1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数,(可以设置窗口风格等等) 2.PreSubclassWindo ...

  4. basler 相机拍照简单类综合Emgu.CV---得到图档

    在网上找了半天都是下载要钱,自己试做了,经测试能ok,一起分享吧.给初学的人一点鼓励. using System;using System.Collections.Generic;using Syst ...

  5. Luogu P2419 [USACO08JAN]牛大赛Cow Contest

    题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...

  6. hive: join 遇到问题

    在表连接时遇到一个问题: insert overwrite table BF_EVT_CRD_CRT_TRAD2 select BF_EVT_CRD_CRT_TRAD.*, jjkdjk.CUST_N ...

  7. Django里使用open函数

    Django里使用open函数 前言 在Django里使用open函数打开一个文件的时候,常常会遇到路径错误的问题.我在Django APP里写了一个爬虫用于为网站提供数据,但是需要打开文件,也就是在 ...

  8. mysql数据库基本使用(增删改查)

    数据库db,database 数据库:依照某种数据模型进行组织并存放到存储器的数据集合dbms,database management system 数据库管理系统:用来操作和管理数据库的大型服务软件 ...

  9. 编写DAO,通过JdbcTemplate操作数据库的实践

    目的:编写DAO,通过Spring中的JdbcTemplate,对数据库中的学生数据进行增删改查操作. 要操作的数据库表结构为: 一.大体框架 1.要利用JdbcTemplate,首先要添加Sprin ...

  10. R︱shiny实现交互式界面布置与搭建(案例讲解+学习笔记)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 看了看往期的博客,这个话题竟然是第 ...