Будет ли JVM когда-либо включать переменные и методы экземпляра объекта? - PullRequest
3 голосов
/ 02 июня 2011

Предположим, у меня очень узкий внутренний цикл, каждая итерация которого обращается к одному объекту бухгалтерии и мутирует его, который хранит некоторые простые данные об алгоритме и имеет простую логику управления им

Объект бухгалтерии является частнымfinal и все его методы являются приватными, 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 и end как локальные переменные и вставлять код nextChunk непосредственно в frobnicate?

1 Ответ

3 голосов
/ 02 июня 2011

В Java он может встроить поля и методы в ситуации, как у вас.Это не устраняет Объект полностью, но приближается.Я предполагаю, что Scala будет работать аналогично.

...