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. js 数组与字符串的相互转化

    数组转字符串:join() 字符串转数组:split('')

  2. JAVA记录-JSP页面获取服务器路径方式

    1.basePath方式 <% String path = request.getContextPath(); String basePath = request.getScheme()+&qu ...

  3. JAVA记录-Spring两大特性

    1.IOC控制反转 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...

  4. 原生js的ajax请求

    传统方法的缺点: 传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次 ...

  5. SpringMVC学习笔记_02

    1.springmvc对多视图的支持 (1)导入xml格式视图支持的jar包   注意:springmvc本身就支持xml格式,所以不用导入其他支持的jar包了. (2)在springmvc.xml中 ...

  6. 一个奇怪的SystemClock_Config问题解决方法

    一直在SystemClock_Config程序死掉,然后下载最新的STm32Cube从新创建项目成功了.

  7. linux系统中查看己设置iptables规则

    1.iptables -L 查看filter表的iptables规则,包括所有的链.filter表包含INPUT.OUTPUT.FORWARD三个规则链. 说明:-L是--list的简写,作用是列出规 ...

  8. u-boot移植(九)---代码修改---NAND

    一.NAND原理 NAND 无地址空间,地址和数据的发送都依赖于LDATA[0:7]这一串数据总线. 不看随机页编程,看到从高位到低位的页,总共分为64个页面,每个页的组成是2K + 64  个byt ...

  9. sql server 查询某个时间段共有多少周及每周的日期段

    sql 语句 as wknum,dateadd(wk,number,'2017-01-01') as firstday, (,, then '2017-12-31' ,,'2017-01-01')) ...

  10. oracle_数据库对象