Java stackoverflow error
本文想记录一下尝试产生stackoverflow的程序
1 -Xss=1k, 设置stack大小1024个字节,产生515个long,想把stack撑爆。
2 嵌套调用
3 创建大量线程
1 -Xss=1k, 设置stack大小1024个字节,产生515个long,想把stack撑爆。
结论:不可能
1 Java里面的stack是动态扩展的,不是固定设死的。因此无法实施
2 Java的对象都是引用,不会在栈上分配空间。这个从C++过来的人,一定要注意。
3 在有些操作系统上,分配的stacksize是固定的,容易撑爆stack。
public class MyMain { public static void main(String[] args) { System.out.println("stack overflow"); //MyMain main; 这个是变量声明,不分配内存空间。
//long aa[] = {,,,,,,,,,,,,,}; 注意这个虽然是基本变量的数组,但是也是在heap
//String str = "hello world"; 这个是在方法区/常量区分配 long a0 = ;
long a1 = ;
long a2 = ;
......
15 long a514 = ; } }
2 嵌套调用
结论:可以撑爆stack
函数的嵌套调用是有深度的,如果结束条件设置不恰当,那么很容易stack overflow
public class MyMain { private static void foo(){
foo();
} public static void main(String[] args) { System.out.println("stack overflow"); foo(); } }
3 创建大量线程
结论:在我的机器上,没有观察到.
设置-Xss=100M,只看到内存100M的速度增加,但是增加到7.9G多的时候就不动了,没有发生OutOfMemoryError。这个原因目前还不清楚。
在书《深入理解java虚拟机》中提到可以观察到OutOfMemoryError。
public class MyMain { public static void main(String[] args) {
// TODO Auto-generated method stub System.out.println("stack overflow"); while(true){ Thread th = new Thread(new Runnable(){ @Override
public void run() {
while(true){
System.out.println("do not stop");
}
} });
th.start(); } } }
Java stackoverflow error的更多相关文章
- idea报错:error java compilation failed internal java compiler error
idea下面报如下问题 error java compilation failed internal java compiler error 解决办法:Setting->Compiler-> ...
- idea Error:java: Compilation failed: internal java compiler error
idea 遇到Error:java: Compilation failed: internal java compiler error 是提示说你当前使用的编译器jdk版本不对. 按住Ctrl+Alt ...
- idea之internal java compiler error
启动错误:Error:java: Compilation failed: internal java compiler error 解决:将圈选地方改为对应的jdk版本即可
- Error:java:Compilation failed: internal java compiler error
在IDEA中编译时出现这个错误:Error:java:Compilation failed: internal java compiler error! Information:Using javac ...
- OFBIZ bug_ControlServlet.java:233:ERROR
错误日志: [java] 2014-09-26 10:12:17,031 (http-bio-0.0.0.0-8443-exec-5) [ ControlServlet.java:233:ERROR] ...
- OFBIZ bug_ControlServlet.java:239:ERROR
错误日志: [java] 2014-09-23 00:11:34,877 (http-bio-0.0.0.0-8080-exec-4) [ ControlServlet.java:141:INFO ] ...
- java 区分error和exception
1) java.lang.Error: Throwable的子类,用于标记严重错误.合理的应用程序不应该去try/catch这种错误.绝大多数的错误都是非正常的,就根本不该出现的.java.lang. ...
- java中Error与Exception有什么区别
Error类和Exception类都继承自Throwable类. Error的继承关系: java.lang.Object java.lang.Throwable java.lang.Er ...
- org.apache.axis2.AxisFault: java.lang.Error: Unresolved compilation problem:
原创:转载请注明出处 今天遇到以下一个异常,找了好长时间,就是不知道什么原因, 在网上搜了好多,也没搜到相关的解决方法. 1.异常展示, org.apache.axis2.AxisFault: jav ...
随机推荐
- 提高entity framework 性能,要注意哪些事情.
转自:http://www.cnblogs.com/jake1/archive/2013/04/25/3043664.html 我发现现在有不少博友,都反对使用EF框架,说它性能低.其实只要你用的好, ...
- 字符串编码、Base64字符串 互转
/// <summary> /// 将字符串编码为Base64字符串 /// </summary> /// <param name="str"& ...
- 各个平台 如何安装 Ruby 和 RubyGems
原文地址:http://cloudfoundry-doc.csdn.net/frameworks/ruby/installing-ruby.html Last Updated: 2012-11-01 ...
- 在MyEclipse配置自己安装的Tomcat(2014.08.18)
今天因为要在tomcat下运行一个java项目,第一次嘛,遇到了不少问题,总结分享一下: 第一次,我直接将 MyEclipse 生成的项目放到 tomcat 安装目录的 webapps 目录下,运行出 ...
- spider爬站极度损耗站点流量
或许部分站长遇到过这样的情况,Baiduspider对一个网站的抓取频率要远高于新内容产出速度,造成了N多的流量被蜘蛛占用. 这样的情况一般是针对小站,因为大站访问量很大,蜘蛛对服务器的频繁访问不会有 ...
- 是C太傻逼?还是C++不够傻逼;
1,类对象宏object-like macro,类函数宏macro中不允许有空格,名称遵循变量名命名规则; 同样是笔记,顺序条理无,看管随意,意在与神会,不解释则会意此为深,随意则会意此乃为度...望 ...
- hdoj 2035 人见人爱A^B
人见人爱A^B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- jni cocos2d-x移植到android:helloworld
前面搭建好了android开发环境 jni开发环境,那么就来用一用目前火热的cocos2d的游戏引擎吧 所需资料: cocos2d :下载地址 http://www.oschina.net/p/co ...
- Oracle的SCN与检查点机制
Oracle的SCN与检查点机制 SCN在Oracle的文档上以多种形式出现,一种是System Change Number,另一种是System Commit Number,在大多数情况下,Syst ...
- 用APK Downloader直接从Google Play上下载apk
APK Downloader可以直接从Google Play上下载apk,相比较其他软件,这个不需要提供Google ID,对于没有刷机的同学还是有些帮助的.