请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于闭包的内存疑问。

老师,我对闭包有几个疑问点:

  1. 闭包返回的函数中,所包含的变量,是需要等到什么被释放?
  2. 此时函数中的变量存放在内存的什么位置?

正在回答 回答被采纳积分+3

1回答

Vincent文森 2022-03-13 19:03:39

同学你好,关于kotlin中闭包的实现原理,在4-9和4-10这两节有涉及。jvm语言实现闭包的方式,主要就是通过匿名内部类。所以,理解jvm中的闭包,在内存中是怎样一种形态的时候,就可以把全部的高阶函数或者lambda表达式,想像成是只有一个方法的匿名内部类的实例。关于第一个问题,闭包既然是个实例,实例所引用的变量肯定是要等到实例销毁之后,如果闭包外部也不存在对这个变量的引用的时候销毁。第二个问题,如果个是函数中创建的变量,和普通方法中创建的变量是没有什么区别的,都是存放在栈中,方法执行结束后出栈。如果是函数外部创建的变量,会通过ObjectRef的方式,放入堆中,可以参考4-9中的介绍。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号