假设我有一个非常紧凑的内部循环,它的每次迭代都会访问和改变一个单一的簿记对象,该对象存储一些关于算法的简单数据,并且具有用于操作它的简单逻辑
bookkeeping 对象是 private 和 final 的,它的所有方法都是 private、final 和 @inline。这是一个示例(在 Scala 语法中):
object Frobnicate {
private class DataRemaining(val start: Int, val end: Int) {
@inline private def nextChunk = ....
}
def frobnicate {
// ...
val bookkeeper = new DataRemaining(0, 1000)
while( bookeeper.hasData ) {
val data = bookkeeper.nextChunk
// ......
}
}
}
JVM 是否会将整个 DataRemaining 对象内联到Frobnicate.frobnicate
? 也就是说,它会将start
andend
视为局部变量并将 nextChunk 代码直接内联到frobnicate
?