JavaのSystem.nanoTime()メソッドは、高分解能のタイマーからその現在値をナノ秒単位の時間で取得するネイティブメソッドです。 高分解能タイマーにはいくつか種類がありますが(後述)、その仕組みは、ハードウェア的にはある周波数で動作するクロックの回数を数えるカウンターとなっています。 ソフトウェアとしては、まずカウンタ値を取得し、次にそのタイマーの周波数を用いてカウンタ値から時刻に変換します。例えば1MHzのクロックのタイマーでカウンタ値が100であれば、 100 / (1 * 1000000) = 0.0001 [sec] となります。 JavaのSystem.nanoTime()がどのような処理を行っているのか、Oracle JDK(OpenJDK)7のソースコードを調べると、Windows OSの場合はWindows APIのQueryPerformanceCounter