假设我有一个非常紧凑的内部循环,每次迭代都会访问并改变一个簿记对象,该对象存储一些关于算法的简单数据并具有简单的操作逻辑
簿记对象是私有(private)的和最终的,它的所有方法都是私有(private)的、最终的和@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
和 end
当作局部变量,并将 nextChunk 代码直接内联到 frobnicate
中吗?
最佳答案
在 Java 中,它可以在您遇到的情况下内联字段和方法。它并没有完全消除对象,而是接近了。我假设 Scala 的工作方式类似。
关于java - JVM 会内联对象的实例变量和方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215138/