JAVA中java.lang.OutOfMemoryError常见的解决方式

在开发中我们很多人都遇到过内存溢出的情况,其实内存溢出分几种形式:

1、tomcat中java.lang.OutOfMemoryError: PermGen space异常处理(最常见的)

概念大家可以查查,其实大家还是关心解决方案:

解决方法:

(1)

手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh在

    echo "Using CATALINA_BASE:   $CATALINA_BASE"

上面加入以下行:

     JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m(2)在eclipse中修改tomcat配置:   增加:-Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M      

2、java.lang.OutOfMemoryError:  Java heap space

发生这种问题的原因是java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。解决这类问题有两种思路:
1. 检查程序,看是否有死循环或不必要地重复创建大量对象。找到原因后,修改程序和算法。
2. 增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

总结:内存的处理,是对于一个开发者良好开发习惯的考验,多年的开发过程,让我知道了,开发大神高手不是有多牛的技术,是对好的开发习惯一种养成,细节决定成败!

				
时间: 2024-11-05 13:44:27

JAVA中java.lang.OutOfMemoryError常见的解决方式的相关文章

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

解决方案 在 catalina.bat 里的 蓝色代码前加入: 红色代码 rem ----- Execute The Requested Command --------------------------------------- set JAVA_OPTS=%JAVA_OPTS%-server -Xms800m -Xmx1024m  -XX:PermSize=128m -XX:MaxPermSize=256m echo Using CATALINA_BASE: "%CATALINA_BASE

【转】Java内存溢出(java.lang.OutOfMemoryError)问题及其解决方法

Java内存溢出(java.lang.OutOfMemoryError)问题及其解决方法 内存溢出有两种情况,如下: 相关配置以Tomcat环境为例 一.java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的. Class在被Loader时就会被放到PermGen space中,它和存放类实例(Insta

java.lang.OutOfMemoryError: PermGen space 解决办法

最近在学习spring mvc时,用了大量的第三方jar包,导致启动tomcat时报内存溢出的错 java.lang.OutOfMemoryError: PermGen space 解决办法:在myeclipse中 点击 window-->preference--->MyEclipse--->Servers---->Tomcat  双击选中你使用的tomcat版本,选择JDK,在Optional java VM arguments 中输入下面两行: -XX:PermSize=128

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

在JAVA中利用public static final的组合方式对常量进行标识

在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值. 1 package TomText; 2 //利用if语句,判断某一年是否是闰年. 3 public class TomText_28 { 4 p

mysql 常见错误解决方式

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 分析: 一般是由于root用户对全局host无访问权限.因此只要给root用户添加一个访问权限即可. 解决方式: grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 参考: http://bbs.c

eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法

一.在window下eclipse里面Server挂的是tomcat6,一开始还是以为,tomcat配置的问题,后面发现,配置了tomcat里面的catalina.bat文件,加入 set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=108m -XX:MaxPermSize=512m ,eclipse跑起来还是报Java.lang.OutOfMemoryError: PermGen space. 后面在网上找了资料,

eclipse 运行报java.lang.OutOfMemoryError: PermGen space解决方法

一.在window下eclipse里面Server挂的是tomcat6,一开始还是以为,tomcat配置的问题,后面发现,配置了tomcat里面的catalina.bat文件,加入 set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=108m -XX:MaxPermSize=512m ,eclipse跑起来还是报java.lang.OutOfMemoryError: PermGen space. 后面在网上找了资料,

Java中关于OOM的场景及解决方法

原文地址:http://developer.51cto.com/art/201112/305696.htm 1.OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space分  析:此OOM是由于JVM中heap的最大值不满足需要,将设置heap的最大值调高即可,参数样例为:-Xmx2G解决方法:调高heap的最大值,即-Xmx的值调大.2.OOM for Perm=>例如:java.lang.OutOfMemoryError: Ja