この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
ジャワ
›
静的手法と単一型パターンの分析
眺める:
15843
|
答える:
0
[出典]
静的手法と単一型パターンの分析
[リンクをコピー]
クズども
掲載地 2019/10/10 18:15:05
|
|
|
プログラミングではよく混乱が生じます。関数の中にはシングルトンで解くものもあれば、静的メソッドで解く関数もありますが、静的メソッドとシングルトンの原理や使い方は何なのでしょうか? 今日はこの件をはっきりさせましょう。
1. まず静的手法と非静的手法の違いを見てみましょう。
多くのプログラマーは、静的メソッドが先にロードされ、非静的メソッドは後でロードされ、静的メソッドは常にメモリ上に存在し、非静的メソッドは存在しないという理解を持っています。 したがって、非静的手法の使用が推奨されます。 まず第一に、この理解が間違っていると強調するのは間違っています。
まずメモリから分析しましょう。アプリケーションが初期化される際、CLR(CLRは共通言語ランタイム)はJava仮想マシンのようなランタイム環境でもあり、リソース管理(メモリ割り当てやガベージコレクションなど)を担当し、アプリケーションと基盤となるオペレーティングシステムとの必要な分離を確保します。 CLRには2つの異なる翻訳名があります:共通言語ランタイム(Common Language Runtime)と共通言語ランタイム(Common Language Runtime)。 各プロセスに対して、管理ヒープである利用可能な空間にアドレス空間を割り当てます。 管理ヒープは複数の領域に分かれており、最も重要なのはガベージコレクションヒープ(GCヒープ)とローダーヒープ(ローダーヒープ)で、後者はオブジェクトインスタンスを保存しGCによって管理されます。 Loader HeapがMethodTableテーブルを通じて保存する最も重要な情報は、ベース型、静的フィールド、実装インターフェース、すべてのメソッドなどのメタデータ関連情報です。 ローダーヒープはGC制御を受け入れず、そのライフサイクルは創造から破壊までです。 言い換えれば、一度クラスがロードされると、そのクラスの静的メソッドと非静的メソッドの両方がLoad HeapのMethodTabテーブルに格納され、GCの制御なしに、最初のロード時にはすべてメモリに常駐します。
静的手法と非静的手法の違いは何ですか? 違いは、オブジェクトを作成する際に静的メソッドはコピーのみを持ち、非静的メソッドは新しいオブジェクトごとにGCヒープ上のこのインスタンスに関する情報コピーをコピーし、同時にその新しいオブジェクトをスタックに置くことです。 スタックポインタが指し示すアドレスは、GCヒープにコピーされたメモリアドレスです。 したがって、メソッド呼び出し速度の観点からは、非静的メソッドをインスタンス化しメモリを割り当てる必要があるため、静的メソッドの方が速いです。
プログラミングの歴史の観点から見ると、初期の構造化プログラミングのほとんどすべての手法は静的であり、インスタンス化メソッドの導入はオブジェクト指向プログラミングの問題であったため、インスタンス化方法は実行効率やメモリの問題を解決するためのものではありませんでした。 それは開発をよりパターン化し、オブジェクト指向にすることです。
上記の分析から結論は以下の通りです。1. 静的法と非静的法は解モードの違いです。 2. 継承、多型、またはメソッドがクラスの対象と無関係の場合は、ツールクラスのような静的メソッドを選ぶべきです。
2. シングルトンモードと静的メソッドの違いは何ですか?
時にはエンジニアリングで、例えば実行時に読み込まれる構成属性のような情報を維持する必要があり、これらはアプリケーションのライフ期間中ずっと存在し、公開されているため、コピーは1つだけで十分です。 現時点では、このデータを保持するためにシングルトンまたは静的手法を用いることを検討しますが、現時点ではオブジェクト指向の方法で取得されるため、シングルトンを使用します。
まず、静的メソッドはクラスベースで、シングルトンはオブジェクトベースです。 解像度パターンがオブジェクトベースの場合はシングルトンを使い、そうでなければ静的アプローチを用いましょう。 例えば、シングルトンを使うためにクラスの継承、インターフェースの実装、初期化の遅延、親クラスの書き換えなどが必要です。次に、静的メソッドはプロセス指向で、シングルトンはオブジェクト指向です。 第三に、静的属性変数はGCによってクリアされないため、シングルトンオブジェクトはGCによってクリアされず、静的メソッドで生成されたオブジェクトは静的メソッドの実行時に解放されます。
先の:
分散メッセージングミドルウェア実践(Ni Wei著)中国語全文PDF
次に:
Dell Latitude 5501ノートパソコンのシャットダウンと自動電源オンの問題が解決しました
関連記事
•
.NET/C#ソリューション SLN から slnx フォーマットへ
•
Visual Studio 2026(VS 2026)エンタープライズエディションのダウンロードおよびインストールチュートリアル
•
.NET/C# は .NET SDK と .NET CLI テレメトリをオフにします
•
. NET6における優先度キュー
•
ASP.NET Core(32)はKeyedServicesの鍵サービスの注入に依存しています
•
.NET/C# Sqids(Hashids)アルゴリズムによるデジタル暗号化および復号化
•
.NET/C#テンプレートエンジン用のRazorLightチュートリアル
•
.NET/C# はオブジェクト(クラスインスタンス)内の文字列の非空文字列をデスペース化します。
•
.NET/C# 正規表現 正規表現マッチング抽出
•
.NET/C# メソッド ImplOptions.AggressiveInlining パフォーマンス最適化
閲覧したセクション
ごみ箱
.Net/C#
リソースの共有
技術チャット
Windows/Linux
HTML/CSS/JavaScript
簡単な言語/E4A
フロントエンドフレーム
ウェブサイト構築
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com