栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

递归和记忆

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归和记忆

涉及两个存储区域:堆栈和堆。堆栈是保存方法调用的当前 状态
(即局部变量和引用)的位置,堆是存储对象的位置。Hotspot文档说,在64位Linux上,默认情况下每个线程的堆栈为1024kB。可以将堆设为任意大,今天它的大小约为GB。

递归方法同时使用堆栈和堆。首先用尽哪一个取决于实现。例如,考虑一个需要数千个整数的方法:如果将它们声明为局部变量,即:

public void stackOverflow() {  int a_1;  int a_2;  int a_3;  // ...  int a_10_000_000;}

你的程序会陷入困境

StackOverflowError
。另一方面,如果您将整数组织成一个数组,例如:

public void outOfMemory() {  int[] integers = new int[10 * 1000 * 1000];}

堆将很快被填满,程序将以结尾

OutOfMemoryError
。无论哪种情况,内存都不会损坏或数据被覆盖。但是,在两种情况下,代码都是 错误的
,必须以某种方式进行修复-只是要告诉您我们需要 如何 进一步了解您的程序。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号