java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space
是指内存的永久保存区域, 该区域被JVM用来存放Class和Meta信息, 该区域默认大小约是4M,并且JVM圾圾回收机不会在运行期对该区域进行清理.随着应用载入的class越来越多(这些class包括所有来自lib包中 引入的jar), 当该区域不够用时,将抛出PermGen space错误,这个时候就应该手动设置Perm Size的值, 如: JAVA_OPTS='-XX:PermSize=64m -XX:MaxPermSize=128m', 这个错误经常发生在应用启动时,如tomcat中运行过多应用,并且每个应用都包含相当多的lib包时,就可能发生该错误,因为每个应用lib包中的 class载入时都会占用该区域一定的内存,即使这些应用包含相同的jar,当这些jar中的class载入时仍可能占用不同的内存区域,所以调整 PermSize大小就是一个选择,另一个不错的办法就是将应用中相同的jar包移动到tomcat的lib目录中,这可以减少Perm区域的内存占用.

java.lang.OutOfMemoryError:Java heap space
JVM堆的内存区域,该区域是一个运行时数据区, 用于分配类的对象, 如我们new出来的实例对象.该区域可由运行时垃圾回收机清理,
JVM在启动的时候会自动设置Heap
size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。当我们在程序运行期间产生的实例对象越来越多,
而这些对象又没有得到及时清理时, 直到这些对象占据到接近-Xmx的设置值时就会抛出该错误. 
举个例子,如我们在web应用的session中保存了太多信息(session保存于服务器内存中),随着用户的增多,每个用户都分别占用着
一定的内存,当同时在线的用户增加到一定程度时,就可能抛出该内存溢出错误,
这个时候最直接的解决办法就是设置-Xmx的大小(一般建议-Xms与-Xmx设置一样大),另一个就是检查你的session中是否存放了太多不必要的
信息.
该错误还经常发生在很多后台线程中,为了处理一些大数据量的东西,我们经常会在系统中创建一些定时任务,这些定时任务可能会较长时间占据着系统的大量内
存,随着任务越来越多,这些线程就可能在不知不觉中引起内存溢出错误!
转自http://www.blogjava.net/huliqing/archive/2013/08/10/402665.html

《转》 java.lang.OutOfMemoryError - 关于java的内存溢出的更多相关文章

  1. java.lang.OutOfMemoryError 解决程序启动内存溢出问题

    java.lang.OutOfMemoryError: Java heap space Myeclipse里面部署的java web项目,浏览器访问的时候出现错误: type Exception re ...

  2. java.lang.OutOfMemoryError:PermGen space tomcat7 内存溢出

    Tomcat 解决 在启动项目的时候,会报java.lang.OutOfMemoryError:PermGen space错误. 在tomcat/bin/catalina.sh  windows li ...

  3. 【转载】java项目中经常碰到的内存溢出问题: java.lang.OutOfMemoryError: PermGen space, 堆内存和非堆内存,写的很好,理解很方便

    Tomcat Xms Xmx PermSize MaxPermSize 区别 及 java.lang.OutOfMemoryError: PermGen space 解决 解决方案 在 catalin ...

  4. Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

    最近老是遇见服务器内存溢出的问题,故在网上搜了搜,总结了一些java内存溢出的解决方式 java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都 ...

  5. [转]Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

    原文地址: http://outofmemory.cn/c/java-outOfMemoryError java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生 ...

  6. Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式

    导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 代码中存在死循环 ...

  7. java.lang.OutOfMemoryError处理错误

    内存详解 原因: 常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 3.代码中存在死循环或循环产生过多 ...

  8. Tomcat Xms Xmx PermSize MaxPermSize 区别 及 java.lang.OutOfMemoryError: PermGen space 解决

    解决方案 在 catalina.bat 里的 蓝色代码前加入: 红色代码 rem ----- Execute The Requested Command ----------------------- ...

  9. java.lang.OutOfMemoryError异常解决方法

    原因:常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据:2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收:3.代码中存在死循环或循环产生过多重复的对象实体:4 ...

随机推荐

  1. 在windows环境下实现开机延迟启动tomcat

    如果说我们的服务器断电了 开机之后还需要手动开下服务  还需要远程连接上  然后一个一个开启  是不是很麻烦  我们可以写一个bat脚本  然后设置开机5分钟之后启动tomcat 首先配置环境变量: ...

  2. Kanboard简单的可视化任务板,项目管理

    采用docker安装 简单快捷 下载 docker pull kanboard/kanboard:latest 运行 docker run -d --name kanboard -p 10080:80 ...

  3. 第三节:工厂+反射+配置文件(手写IOC)对缓存进行管理。

    一. 章前小节 在前面的两个章节,我们运用依赖倒置原则,分别对 System.Web.Caching.Cache和 System.Runtime.Cacheing两类缓存进行了封装,并形成了ICach ...

  4. proxysql 系列~审核功能

    一 简介:今天我们来探讨下具体的审核功能 二 平台审计功能 一 proxysql 设置  set mysql-eventslog_filename = '/data/ProxySQL/log/sql. ...

  5. 运维数据库平台~inception审核规则详解

    ---恢复内容开始--- 一 简介:这次我们来介绍最核心的审核功能 二 讲解:简单来说 inception就是mysql的二次过滤,何谓二次过滤,我们知道,mysql本身都有自己的审核规则,为业界所通 ...

  6. GSON中Java对象与JSON互相转换——(一)

    json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 2)Gson:google 3)fastjson:阿 ...

  7. List Control控件

    List Control控件 显示方式 属性[View]选择成[Report]. 添加成员变量 绑定变量:m_listCtrl 设置值 // 表头添加 m_listCtrl.SetExtendedSt ...

  8. 利用grub从ubuntu找回windows启动项

    在 /boot/grub/grub.cfg 中添加: menuentry "Windows 10" --class windows --class os { insmod ntfs ...

  9. V$SQLAREA

    1.查看消耗资源最多的SQL: SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls FROM V$SQLAREA W ...

  10. RMAN-06059(转)

    change archivelog all crosscheck;