在看张老师的视频时看到 可变参数在被调用时,编译器为该可变参数隐含创建了一个数组,在方法体中以数组的形式访问可变参数。我就产生了一个疑问,
我们知道在内存中,方法是先存入栈内存,方法中的参数变量也跟着进入,等方法调用结束后再释放内存,而数组却是在栈内存中先产生一个引用变量,
然后在堆内存中储存数组实体,并生成地址 与栈内存中的引用变量相对应以方便调用。
那么可变参数在被方法调用时究竟是以什么形式在内存中运行的呢?是只在栈内存中运行,还是像数组一样在堆和栈 中同时运行?它是运行完毕后就直接释放内存,还是在运行完毕后等java虚拟机的垃圾回收机制自动处理掉呢? |