搜索
当前位置: 678彩票官网 > 递归块编码 >

Java递归调用的问题调用10000次的代码会报错

gecimao 发表于 2019-04-18 14:22 | 查看: | 回复:

  这是源代码,1加到1000没有问题能输出数据,但是1加到10000就会出错

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  推荐于2016-03-06展开全部很简单。函数调用,参数保存在当前线程的栈Stack中,而不是保存在堆Heap中。一般来说Java虚拟机默认的Heap大小是128M,用来存放new的对象。但是对于每一个线KB。所以,Java不能支持过多层次的递归调用。

  至于为什么默认的栈的大小只有512KB, 那是因为在现代操作系统中,一个进程的最大虚拟内存是2GB(以32位架构为例),一个进程可以启动多个线程。每启动一个线程,操作系统都要分配一段内存做Stack,来保存这个线程函数调用的参数。也就是说,为了达到最大线程数和线程所用Stack的平衡,一个进程会设置它启动的线程的Stack的大小。在Java中,栈的大小是512KB,所以最大可以启动 2GB/512KB ,大约是2000个线个, 将会报错(OutOfMemory)类似的我记得C++的默认栈大小是1MB。也就是C++能启动1000个左右的线程。

  抱歉了·· 这个还真的不知道·· 但是问题是 现在的编程 内存都是次要的考虑问题啊·· 10000次递归确实有点多, 也许该考虑换个思路咯··

本文链接:http://windsorflowers.net/diguikuaibianma/94.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部