请问:
我在think in java 中看到这样一段话:
当编译器发现一个final方法调用命令时 它会根据自己的瑾慎判断 跳过插入程序代码这种正常方式而执行方法调用机制(将参数压入栈 跳至方法体代码处并执行 然后跳回并清理栈中的参数 处理返回值) 并且以方法体中的实际代码的副本来代替方法调用 请问:
1,执行方法调用时正常的方式是什么呢(能加入内存一起解释吗)
2,这种非正常的方式又是怎么回事呢
谢谢
我在think in java 中看到这样一段话:
当编译器发现一个final方法调用命令时 它会根据自己的瑾慎判断 跳过插入程序代码这种正常方式而执行方法调用机制(将参数压入栈 跳至方法体代码处并执行 然后跳回并清理栈中的参数 处理返回值) 并且以方法体中的实际代码的副本来代替方法调用 请问:
1,执行方法调用时正常的方式是什么呢(能加入内存一起解释吗)
2,这种非正常的方式又是怎么回事呢
谢谢
而正常方式就是“将参数压入栈 跳至方法体代码处并执行 然后跳回并清理栈中的参数 处理返回值”。内联调用采用代码替换的方式,能省去正常方法调用时的开销,可能会提高效率。
不过当函数代码过多时,或者在循环中调用内联函数,效率反而会下降。
就是一邊翻一邊看都比看翻錯的好
正常的方式就是一般的参数压栈,然后跳起函数入口处开始执行的方式。
而它所说的非正常方式,就相当于把被调函数的代码插入到调用处。
原版看不懂
翻译看不明白
咋活啊
请问:
1,执行方法调用时正常的方式是什么呢(能加入内存一起解释吗)
用栈记录函数调用的过程.
2,这种非正常的方式又是怎么回事呢
内联的方式,.直接把函数体里面的代码插入函数调用的地方,进行顺序执行.