如何在虚拟机栈中出现OOM异常

问题描述

最近在学习JVM。读到了outofmemory这一块。在虚拟机栈内存中,很容易可以通过递归,使程序报StackOverFlowError。但是,怎样的代码可以在虚拟机栈内存出现OutOfMemory内存呢。似乎都是stackoverflow~

解决方案

解决方案二:
这还不简单么,不断申请内存,不要释放...List<Object>objects=newArrayList<Object>();while(true){objects.add(newint[100000]);}

解决方案三:
引用1楼dollyn的回复:

这还不简单么,不断申请内存,不要释放...List<Object>objects=newArrayList<Object>();while(true){objects.add(newint[100000]);}

这是堆内存溢出,我说的是栈内存
解决方案四:
一般说来,讲到“内存”就是堆,一般没有栈内存这种说法如果非要说的话,StackOverFlow就是所谓的栈内存溢出了http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
解决方案五:
引用楼主bobiy45785的回复:

最近在学习JVM。读到了outofmemory这一块。在虚拟机栈内存中,很容易可以通过递归,使程序报StackOverFlowError。但是,怎样的代码可以在虚拟机栈内存出现OutOfMemory内存呢。似乎都是stackoverflow~

OutOfMemory指的就是堆溢出了,用new不停申请内存就可能会发生

时间: 2024-12-03 15:27:23

如何在虚拟机栈中出现OOM异常的相关文章

解决Android平台中应用程序OOM异常的方法_Android

在Android平台上面,应用程序OOM异常永远都是值得关注的问题.通常这一块也是程序这中的重点之一.这下我就如何解决OOM作一点简单的介绍. 首先,OOM就是内存溢出,即Out Of Memory.也就是说内存占有量超过了VM所分配的最大. 怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),在这样的一种情况下,就可能出现OOM,据我现在了解到,多数OOM都是因为Bitmap太大.所以,这里我就专门针对如何解决Bitmap的OOM.其实最核发

Java内存溢出(OOM)异常完全指南

我的职业生涯中见过数以千计的内存溢出异常均与下文中的8种情况相关.本文分析什么情况会导致这些异常出现,提供示例代码的同时为您提供解决指南. 这也许是目前最为完整的Java OOM异常的解决指南. 1.java.lang.OutOfMemoryError:Java heap space Java应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永久代): JVM内存模型示意图 这两个区域的大小可以在JVM(Java虚拟机)启动时通过参

类全局变量的Reference保存在堆中还是栈中

问题描述 比如我有两个类,分别是TestA 和 TestBpublic class TestA { public List<String> list = new ArrayList<String>();}public class TestB { public static void main(String[] args) { TestA a = new TestA(); a.list.add("Test"); }}我看书的时候说所有的reference都保存在栈

Javascript技术栈中的四种依赖注入小结_基础知识

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri

Javascript技术栈中的四种依赖注入详解_javascript技巧

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri

java中++a和a++ 在数组实现栈中的小疑问

问题描述 java中++a和a++ 在数组实现栈中的小疑问 package 数组实现栈; public class StackArray implements Stack { public static final int num = 1024;//数组默认容量 public int capacity;//数组实际容量 public Object s[];//对象数组 public int top = -1;//栈顶元素位置 //构建默认容量栈对象 public StackArray() { t

mfc-MFC中一个关于异常的问题

问题描述 MFC中一个关于异常的问题 在VS中,为什么会让我这样写CATCH,中间的逗号是什么意思,没有的话就出错,说让我输入")" CATCH(CFileException,e) 解决方案 http://blog.chinaunix.net/uid-21411227-id-1826958.html 这里有详细一些的介绍,以及宏的定义. 注意区分作为C++语法的try catch和MFC的宏TRY CATCH. 解决方案二: CATCH是MFC中的一个宏,在MFC诞生的时候,C++还很

详解Android中处理崩溃异常_Android

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序. 我们先建立一个crash项目,项目结构如图: 在MainActivity.ja

在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如何捕捉全局的异常.基本上在winform或web中捕获全局异常的思路都是一样的,在全局的应用程序对象中添加异常捕获的代码,并写入日志文件中. 一.在Winform程序中捕获全局异常 在winfrom中我们需要了解Application对象中的两个事件 ①Application.ThreadExcep