写Java代码分别使堆溢出,栈溢出
首先要搞清楚堆栈里放的什么东西:
栈存储运行时声明的变量——对象引用(或基础类型, primitive)内存空间,堆分配每一个对象内容(实例)内存空间。
一个变量可以先后指向多个对象实例;数组、链表等可以存放对多个实例对象内容的引用关系。没有引用关系的对象内容按说被虚拟机回收(recycled,destroy,在C++叫delete,在C叫free)。 栈的实现是先入后出的, 相似的集装箱那种货舱。 堆是随机存放的, 相似于现在的停车场。 记得曾经,有一本游戏的外国书, 说游戏要分配好栈空间和堆空间; 在开始时候分配固定容量的空间, 有不同的自顶向下和从下向上的地址空间分配。
stackoverflow , 总是在无限递归调用时候可以看见(google也经常有同名网站的结果)。
堆内存满, 可以通过无限new实现。
======================华丽的分隔符================================
在JAVA中,可以使用关键字new来创建Java对象。例如,
ArrayList list = new ArrayList();
实际上,在创建完上面的一个对象后,在JVM中,会把new出来的对象存放在堆内存中,
同时,在方法栈中存放着对象的引用关系。
如果想要堆溢出,比较简单,可以循环创建对象或大的对象;
如果想要栈溢出,可以递归调用方法,这样随着栈深度的增加,JVM 维持着一条长长的方法调用轨迹,
直到内存不够分配,产生栈溢出。
因此,可以使用下面简单的代码实现堆溢出和栈溢出。
public class Test {public void testHeap(){for(;;){ArrayList list = new ArrayList (2000);}}int num=1;public void testStack(){num++;this.testStack();}public static void main(String[] args){Test t = new Test ();t.testHeap();t.testStack(); } }
另外,Java虚拟机的堆大小如何设置:命令行
java –Xms128m //JVM占用最小内存
–Xmx512m //JVM占用最大内存
–XX:PermSize=64m //最小堆大小
–XX:MaxPermSize=128m //最大堆大小
转载于:https://www.cnblogs.com/MJyc/p/10408222.html
写Java代码分别使堆溢出,栈溢出相关推荐
- 写java代码时的注意事项_从方法返回Java 8的可选项时的注意事项
写java代码时的注意事项 Java 8引入的Optional类一直是该语言版本引入的最具争议的功能之一. 尽管我喜欢这个新的Java类的东西比不喜欢的东西多,但在Java方法中将其用作return类 ...
- Jupyter 配置 Java环境,写Java代码,测试成功
本次简单诉说下怎么通过jupyter安装iJava,写Java代码. 安装Java的不说了 我使用的是Java15 然后去:https://github.com/SpencerPark/IJava/r ...
- java el表达式 导航规则_诺禾:在jsp里面如何不写java代码展示数据(EL表达式的使用)...
EL表达式可以简化jsp中写的java代码 在jsp里面如何不写java代码展示数据(EL表达式的使用) 在jsp里面如何不写java代码展示数据(EL表达式的使用) 在jsp里面如何不写java代码 ...
- vscode写java没有提示_VS Code报错Language Support for Java(TM)插件显示需要JDK11 写java代码没有提示...
鉴于IDEA的打开速度(电脑的垃圾),平常刷LeetCode都是在VSCode上,结果这几天老是打开给我报错 Java 11 or more recent is required to run. Pl ...
- 如何在jsp里面写java代码
jsp和html相比,最显著的优势就在于,jsp里面可以写java代码,但是html中不能. 那么如何在jsp中写java代码呢! jsp中写java代码有如下三种方式: <%! %>,这 ...
- Eclips写Java代码和CSS、Javascript、Html代码设置代码自动提示功能
按照我的方法设置后用Eclipse编写Java代码和前端代码(Html.CSS.JS)都可以自动提示代码.赶紧去试试吧. 1.打开Eclipse软件,点击Windows→Preferences→Jav ...
- jsp里写java代码报错,jsp里写java代码报错
jsp里写java代码报错 [2021-02-11 06:42:03] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...
- vim java 编程_你也用Vim写Java代码?
献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员 序 文章源起于segmentfault论坛中的一个问题, 由于回答的有点尽性, 便转为文章. 题主应该是个Vim初学 ...
- 同事说,我写Java代码像写诗
文章来源:http://33h.co/kntu3 前几天空闲时间写了一遍关于平时自己写代码的一些习惯,这里跟大家分享一下. 定义配置文件信息✦ 有时候我们为了统一管理会把一些变量放到 yml 配置文件 ...
- 写java代码用什么软件好,重要概念一网打尽!
正文 下文中截图来源于朋友一个pdf版本的面经,把所以知识点的答案整理了下来,耗费他至少1个月时间,在本文最后部分把这个pdf分享给大家,觉得有用的麻烦点赞关注走一波,谢谢!!!面经中有他的知识点的答 ...
最新文章
- struts2导入excel模板_「微干货」“人员其他数据导入”应用介绍
- 聚焦云原生,阿里云与 CNCF 共话「云未来,新可能」
- Winform中实现新增和更新共用一个页面的示例流程
- Android 常用权限
- 如何在ashx页面获取Session值(未将对象引用设置到对象的实例) (转)
- PostgreSQL学习手册(数据库维护) 转
- 由Dvbbs PHP 0day引发的争论
- HttpClient中异步方法的同步调用
- JSON和JSONP的差别,以及用法
- 吴恩达团队新研究:用X光片识别14种疾病,AI准确度部分超越人类
- 《战争论》第四篇《战斗》的主要内容
- Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理(15)
- idea中mapper.xml的头文件配置
- 【接箱子2.0】新手划过,dalao勿喷
- 这次的新计算,很全能!
- Eclipse3.5中安装maven插件出现“ the -vm option in eclipse.ini is pointing to a JDK”解决
- 使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步
- ZLMediaKit源码分析 - NotifyCenter
- 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”
- 【阿里云】第一次进行域名注册、备案以及使用全过程
热门文章
- 行内元素多出的空白文本节点的解决方法
- gcc -nostartfiles; -nodefaultlibs; -nostdlib;-f...
- Error accessing PRODUCT_USER_PROFILE?
- 常用的一些注入命令!!!
- 搭建基于ASP.NET 2.0的DNN 4.X模块开发环境及模块实例(2)
- “无法找到Internet Explorer”的解决方法
- python if条件判断语句
- 100 - k8s源码分析-准备工作
- 初步了解CUDA(零)
- 运用异或运算实现两个数不通过中间变量交换值的原理分析