OutOfMemory

OutOfMemory的三种情况

1) 永久区溢出 Exception in thread "main" java.lang.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的时候。

可以通过设置jvm启动参数来解决: -XX:MaxPermSize=256m

2)堆溢出 java.lang.OutOfMemoryError: Java heap space

这部分用于存放类的实例。被缓存的实例(Cache)对象,大的map,list引用大的对象等等,都会保存于此,过期引用可能会导致堆溢出。堆内存会在jvm启动时自动设置,初始值 -Xms为物理内存的1/64,最大值-Xmx为1/4;可以通过参数-Xmn、-Xms、-Xmx设置,一般-Xms和-Xmx不超过80%,-Xmn为-Xmx的1/4;

3)栈溢出 Exception in thread "main" java.lang.StackOverflowError

这部分用于存放局部变量、方法栈帧信息。递归太深,栈帧太多,也就是函数调用层级过多时就会出现此异常,检查是否有死递归的情况。对应的启动参数为:-Xss ( JDK1.5以后默认是1M,之前是256K)

实例,以下是1G内存环境下java jvm 的参数设置参考:

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

时间: 2024-11-10 07:38:36

OutOfMemory的相关文章

java.outOfMemory

http://www.kdgregory.com/index.php?page=java.outOfMemory Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html

基于Java软引用机制最大使用JVM堆内存并杜绝OutOfMemory

题记:说好的坚持一周两篇文章在无数琐事和自己的懒惰下没有做好,在此表达一下对自己的不满并对有严格执行力的人深表敬意!!!! --------------------------------------------------------------------------------------------------------------------------------- 引文:Java程序员对OutOfMemory并不陌生,一般来说,出现此异常主要是由于应用里缓存了大量的数据没有被GC

Weblogic OutOfMemory exception的误解 -- thread limitation

不是所有的OutofMemory exception都是内存问题...前几天有个客户的site报了以下错误: [ERROR][thread ] Could not start thread Timer-72025. Resource temporarily unavailable Exception in thread "Timer-72024" java.lang.OutOfMemoryError: Resource temporarily unavailable in tsStar

位图引起的内存溢出OutOfMemory解决方案

作者:老帅 一.问题描述:Android下的相机在独自使用时,拍照没有问题,通过我们的代码调用时,也正常,但是更换了不同厂商的平板,ROM由Android4.0变成了Android4.1后,拍照出现了OutOfMemory异常,程序中断退出.如何解决这个问题呢? 二.先看看我们之前所写的代码 1) 调用系统相机(没有怀疑这里出错,代码略) 2)显示图片 mImageView = (ImageView) findViewById(R.id.imageView); fileName = mData.

JVM 调优 —— OutOfMemory

零. 简介 OutOfMemory 意思就是需要申请更大的内存, 但是内存限制无法申请到需要的内存. 一. 解决方法 基本上解决方向有两种: 检查程序是否有问题, 是不是写死循环不停地创建并持有对象导致内存不足 内存确实不够, 分为老年代内存不足和永久代内存不足 (1) 老年代内存不足 看一段 GC 日志:在 Full GC 结束后, 但是老年代占用空间还是接近或者等于老年代最大空间, 说明老年代空间确实分配不够. 调大 -Xms. -Xmx 并保持新生代大小不变,直到 GC 日志不出现关键字

几种outofmemory的解决方法

几种outofmemory的解决方法: 1.  java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space.从文字上看就是内存溢出,解决方法是加大内存.为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和

对Java OutOfMemory异常的探究

Java堆溢出 虚拟机参数: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError 将堆的最小值和最大值都限制成为20M,-XX:+HeapDumpOnOutOfMemoryError出现内存异常时令java虚拟机Dump堆内存转储快照 代码 1 import java.util.*; 2 3 /** 4 * Created by zcy on 2017/6/11. 5 */ 6 public class TestHeapMemory { 7 8 sta

Bitmap OutOfMemory

在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常 E/AndroidRuntime(  697): java.lang.OutOfMemoryError E/AndroidRuntime(  697):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) E/Androi

OutOfMemory排查

1.出现的情景:第一天测试,tps100左右,第二天测试tps5左右,平均响应时间很大.查看监控发现内存很高,CPU也70%左右.确认代码环境都没有变动.查看程序日志,发现报错,显示 Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded,查看tomcat的JVM配置,为3G,内存监控为3G,爆满.Jprofile显示char[]占用大量内存 2.排查具体class 查询原因,网上显示: 1.内存泄露,对象已经死了,无法