タグ

ブックマーク / torutk.hatenablog.jp (2)

  • 高精度タイマーQueryPerformanceCounterの分解能 - torutkのブログ

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

    高精度タイマーQueryPerformanceCounterの分解能 - torutkのブログ
    teematsu
    teematsu 2018/01/12
    “QueryPerformanceCounter”
  • .NET Frameworkのメモリ管理と断片化問題(.NETアプリケーションを長期連続実行するのは要注意) - torutkのブログ

    C#とJavaの言語選定にあたり、実行環境の比較をするため、ガベージコレクタについて調べていました。 .NET Frameworkのガベージコレクション方式は世代別GCですが、Javaとは随分異なっています。特に顕著に異なっているのがLOH(Large Object Heap)と呼ばれる大きなサイズのオブジェクトを格納する専用ヒープ領域がある点です。現在のバージョンでは、85KB以上のサイズのオブジェクトは世代別管理のヒープ(generation 0)ではなく、このLOHに割り当てられます。 この仕組みについては、MSDNマガジン(オンライン)の記事に詳しくあります(以下URL)。 CLR徹底解剖:大きなオブジェクトヒープの秘密 LOHは、第2世代(Javaで言えばOld世代)のGCと同じタイミングでGCがかかります。LOHでは、オブジェクトか回収された後、コンパクションを実施しないため、

    .NET Frameworkのメモリ管理と断片化問題(.NETアプリケーションを長期連続実行するのは要注意) - torutkのブログ
    teematsu
    teematsu 2012/05/15
    ガーベジコレクション
  • 1