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