サポート&サービス

Home > サポート&サービス > テクニカルサポート > ナレッジベース

テクニカルサポート

製品に関する技術的なサービスを提供しています。製品別の技術情報(ナレッジベース)および、対応環境情報をご覧いただけます。また、E-mailによるテクニカルサポートのお申し込みもこちらで受け付けています。

ComponentOne サブスクリプション製品をご購入された方

サブスクリプションにて、ComponentOne製品(ComponentOne Studio、Wijmo、Xuni)をご購入された方は、下記のComponentOne Studioサイトからユーザー登録をお願いいたします。

ComponentOne サブスクリプション製品のユーザー登録を行う

ナレッジベース

64ビット(x64)環境でWindowsアプリケーションを実行した場合、初回起動に時間がかかる
文書番号 : 30424     文書種別 : Info
最終更新日 : 2011/01/26
文書を印刷する
対象製品
.NET 製品共通
詳細
[現象]
64ビット(x64)環境上で64ビットアプリケーションを実行すると、32ビットアプリケーションを実行した場合に比べ、初回起動時に時間がかかります。

※本現象は、ビルド時のターゲットCPU(C#ではプラットフォームターゲット)を「AnyCPU」または「x64」に設定した場合に該当する可能性があります。「AnyCPU」の場合、32ビット(x86)環境上では32ビットアプリケーションとして、64ビット(x64)環境上では64ビットアプリケーションとして動作します。

[原因]
64ビット環境上でのJITコンパイル処理では、内部処理の実装上、主に最適化処理を行うため、メソッド (MSIL コード) のサイズが増大するにつれてより多くのメモリを消費する傾向があります。また、JITコンパイル処理においては、基本的にはメソッドのサイズの増加に対して、その処理時間も可能な限りサイズに比例する形の直線的な増加に近づけることが理想形ですが、64ビット環境上でのメモリ消費量の増加は、ある一定値まで、サイズの増加に対してn^2倍に比例する形で処理時間が増加する傾向があります。このため、メモリ消費量が増加することで、起動時間が増大するなどのパフォーマンスの低下につながります。

本件は、Microsoft社からの見解として64ビットOS上における.NET Frameworkの制限事項であることが判明しています。

[回避方法]
以下のいずれかの方法で改善できる可能性があります。

方法1:ビルド時のターゲットCPUを「x86」に設定する。この場合、アプリケーションは32ビットアプリケーションになり、64ビット環境ではWOW64上で動作します。

方法2:Ngen.exe(ネイティブイメージジェネレーター)を利用して、事前にネイティブイメージを生成する。

ターゲットCPUの設定およびNgen.exeの使用方法については、Microsoft社のページをご参照ください。

[参考情報]
アプリケーションを特定の種類のCPU に最適化する
http://msdn.microsoft.com/ja-jp/library/5b4eyb0k.aspx

Ngen.exe(ネイティブ イメージ ジェネレーター)
http://msdn.microsoft.com/ja-jp/library/6t9t5wcf.aspx
※方法2については、x64用のNgen.exeを使用する必要があります。

ネイティブ イメージ サービス
http://msdn.microsoft.com/ja-jp/library/ms165074.aspx
関連情報

この情報は、疑問・問題解決のお役に立ちましたか?

    


こちらに入力されたご質問には回答できませんので、製品に関するお問い合わせは、別途「E-mailサポート」をご利用ください。


※ 個人情報保護のため、個人情報の記入はご遠慮ください。

このページの先頭へ