写程序让Java的堆、栈分别溢出……
像这样蛋疼的问题估计也只能在面试的时候问一问了、
看了一些简单的JVM内存分配的博客和书籍、
知道堆、栈上面分别存储的是什么东西、这个事情就稍微好办一些了、
【1、Java栈溢出 思路 递归调用 】
如果想要栈溢出,可以递归调用方法,这样随着栈深度的增加,JVM 维持着一条长长的方法调用轨迹,直到内存不够分配,产生栈溢出。
public class Scheduled {
public void testStack(){
this.testStack();
}
public static void main(String[] args){
Scheduled s = new Scheduled();
s.testStack();
}
}
【2、Java堆溢出 思路 一直创建大对象 】
// java堆溢出
Vector v=new Vector();
for(int i=0;i<2500;i++){
v.add(new byte[1*1024*1024]);
}
还有一种方式写一个死循环创建一个ArrayList 一直往里放一个静态对象。但是在我自己的电脑测试始终不能溢出。程序如下:
public class Scheduled {
static class OOMObject{
}
public void testHeap(){
for(;;){
ArrayList<OOMObject> list = new ArrayList<OOMObject> ();
list.add(new OOMObject());
}
}
public static void main(String[] args){
Scheduled s = new Scheduled();
s.testHeap();
}
}
----上面这个例子把创建list的语句放到for循环外面搞定!创建一个list一直往里add不是一直创建好多个list每个里面扔一个。
参考资料:
http://fxlzs2000.iteye.com/blog/1786407
http://www.uucode.net/201504/jvm1
测试代码如下:近期会一直保持更新,欢迎关注~
https://github.com/ymm8505/InterviewStudy.git
分享到:
相关推荐
完美解决java读取excel内存溢出问题,希望可以帮到大家
栈 溢出 c++ 栈 溢出 c++ 栈 溢出 c++
JAVA内存溢出问题总结
缓冲区溢出——栈溢出,很有用哟,但是网上也有很多的
缓冲区溢出攻击技术-栈溢出攻击技术。网络安全相关。
主要介绍了java内存溢出示例(堆溢出、栈溢出),需要的朋友可以参考下
栈溢出基础知识栈溢出保护机制、栈溢出利用方法.docx
V5-305_FreeRTOS实验_任务栈溢出检测方式一 (模拟栈溢出)
java内存泄露、溢出检查方法和工具。 步骤: 1,使用linux命令生存堆栈文件 2,用MemoryAnalyzer.exe工具打开 3,根据工具生成的饼状图可以清晰的找出内存泄漏源
V5-306_FreeRTOS实验_任务栈溢出检测方式二 (模拟栈溢出)
WindowsDNS服务器远程栈溢出漏洞的应用研究 WindowsDNS服务器远程栈溢出漏洞的应用研究 WindowsDNS服务器远程栈溢出漏洞的应用研究
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm>-Xms3062m ...
java解决大批量数据导出Excel产生内存溢出的方案
其中包括一个关于栈溢出攻击技术的ppt以及ppt上涉及的源代码程序
自己收集的一些栈溢出可执行程序,自己通过AFL fuzz出大量的crash,是做漏洞挖掘实验验证所需的。
Java内存溢出的详细解决方案 Java内存溢出的详细解决方案
栈溢出是pwn的根本也是萌新入坑最好的方式,里面有栈溢出的根本原理等希望喜欢
NiosII之动态栈溢出检测功能,中文版的资料 蔡伟刚编写。 密码:NiosII.cublog.cn(区分大小写)
栈溢出利用软件漏洞分析入门,挺不错滴、、、
主要介绍了Java 堆内存溢出原因分析,任何使用过基于 Java 的企业级后端应用的软件开发者都会遇到过这种报错,java.lang.OutOfMemoryError:Java heap space。,需要的朋友可以参考下