ホームページ  >  記事  >  システムチュートリアル  >  win11のメモリリークを解決する方法. win11のメモリリークの原因分析とさまざまな解決策。

win11のメモリリークを解決する方法. win11のメモリリークの原因分析とさまざまな解決策。

PHPz
PHPz転載
2024-02-29 09:58:50754ブラウズ

php エディタ Xiaoxin が wi​​n11 のメモリ リーク問題を分析します。メモリ リークは、プログラムのバグ、未公開のリソースなど、さまざまな理由によって発生する可能性があります。解決策には、システム パッチの更新、メモリ リークの原因となる可能性のあるプログラムの終了、メモリ管理ツールの使用などが含まれます。原因を分析し、効果的な対策を講じることで、win11のメモリリーク問題を効果的に解決し、システムのパフォーマンスと安定性を向上させることができます。

メモリ リークの原因:

メモリ リークは、不正なメモリ割り当てによるコンピュータ プログラム内のリソースの不整合によって発生します。これは、未使用の RAM の場所がまだ解放されていない場合に発生します。メモリ リークを、プログラムが必要以上に多くの RAM を使用する領域リークやメモリ使用量の増加と混同しないでください。 Windows 11/10/8/7 システムでのメモリ リークは、メモリが使用されていないがアクセスできない場合に発生するとされています。

メモリ リークが問題となる理由:

メモリ リークが問題となるのは、オペレーティング システムまたはソフトウェアのバグ、欠陥であるためです。しかし、それがシステムにどのような影響を与えるかを正確に見てみましょう:

  • これにより、メモリが使用されていない場合でも解放されないため、メモリが枯渇してしまいます。
  • メモリが使い果たされると、ソフトウェアが古くなります。
  • 利用可能なメモリが減少すると、応答時間が増加し、システムのパフォーマンスが低下する可能性があります。
  • メモリ リークがチェックされていないと、最終的にアプリケーションがクラッシュする可能性があります。

メモリ リークを特定するには、プログラマはプログラムのソース コードにアクセスする必要があります。

メモリ リークを特定する方法

問題を解決するには、まず問題を特定する必要があります。メモリ リークを特定するための基本的な手順は次のとおりです。

  • 確認 : リークが発生したかどうかを判断します。
  • カーネル モード メモリ リークの検索: カーネル モード ドライバー コンポーネントによって引き起こされるリークを特定します。
  • ユーザー モードのメモリ リークの検索: ユーザー モードのドライバーまたはアプリケーションによって引き起こされたリークを特定します。

メモリ割り当ての仕組み

アプリケーションが RAM を割り当てるにはさまざまなモードがあります。使用後に領域が解放されない場合、割り当てモードに関係なくメモリ リークが発生する可能性があります。一般的な割り当てパターンは次のとおりです。

  • HealAlloc 関数はヒープ メモリの割り当てに使用されます。 C/C ランタイムに相当するものは、malloc と new です。
  • オペレーティング システムから直接割り当てるための VirtualAlloc 関数。
  • Kernel32 アプリケーションのカーネル メモリを保存するための API。たとえば、CreateFile、CreateThreadなどです。
  • User32 API と Gdi32 API。

Windows でメモリ リークを防ぐ方法

治療よりも予防​​の方が良いことは誰もが知っているため、システムを監視することが重要です。

さまざまなプログラムやアプリケーションが RAM を異常に使用していないか注意する必要があります。 CTRL SHIFT ESC を押して Windows タスク マネージャーに移動し、ハンドル、ユーザー オブジェクト、GDI オブジェクトなどの列を追加できます。

これにより、リソースの使用状況を簡単に監視できます。

メモリ リークを診断するための Microsoft ツール

さまざまなツールがさまざまな割り当てモードでメモリ リークを診断します。

  • Application Verifier はヒープ リークを診断します。
  • UMDH (Windows 用デバッグ ツールのコンポーネント) は、ヒープ メモリの割り当てを監視することで、個々のプロセスのリークを分析します。
  • トレース キャプチャは、RAM の使用状況を包括的に分析するために使用されます。
  • Xperf はヒープ割り当てパターンも追跡します。
  • CRT デバッグ ヒープは、ヒープ割り当てを追跡するだけでなく、リークを最小限に抑えるコーディングの実践も可能にします。
  • JavaScript メモリ リーク ディテクタ コード内のメモリ リークをデバッグします。

使用上のヒント

  • Win32 リソースとヒープの割り当てには、カーネル ハンドルとその他のスマート ポインターを使用します。
  • カーネル割り当て用の自動リソース管理クラスを ATL ライブラリから取得します。 C 標準にはヒープ割り当て用の auto_ptr があります。
  • _com_ptr_t、_bstr_t、または _variant_t を使用して、COM インターフェイス ポインターを「スマート ポインター」にカプセル化します。
  • .NET コードの異常なメモリ使用量を監視します。
  • 関数の終了時にほとんどのブロックの変数から割り当てが解放されるように、関数からの複数の終了パスを避けてください。
  • ネイティブ例外は、_finally ブロック内のすべての割り当てが解放された後にのみ使用してください。すべてのヒープとハンドルの割り当てをスマート ポインターにラップして、C 例外を使用します。
  • PROPVARIANT オブジェクトを再初期化または破棄する前に、必ず PropVariantClear 関数を呼び出してください。

Windows 11/10 でメモリ リークを修正する方法

メモリ リークを防ぐさまざまな方法と同様に、メモリ リークを阻止するさまざまな方法もあります。ただし、開始する前に、まずシステムの復元ポイントを作成することを忘れないでください。

1]プロセスを閉じて再起動します

不要なプロセスが RAM を占有しすぎている場合は、タスク マネージャーでプロセスを終了できます。解放された領域を他のプロセスで使用できるようにするには、デバイスを再起動する必要があります。再起動しないとメモリリーク問題は解決しません。ランタイム ブローカーは、PC の速度を低下させることが知られているプロセスです。それを無効にするだけで機能するかどうかを確認してください。

2]メモリ診断ツール

Windows 用の組み込みメモリ診断ツールにアクセスするには:

  • 重要な作業をすべて保存します。
  • Win R を押して「ファイル名を指定して実行」ウィンドウを開きます。
  • [ファイル名を指定して実行] ウィンドウにコマンド mdsched.exe を入力します。
  • コンピュータを再起動します。
  • 再起動後、基本スキャンを実行するか、「テストの組み合わせ」や「パス数」などの「詳細」オプションを選択します。
  • F10 を押してテストを開始します。

これらはまだ一時的な修正です。

3] ドライバーの更新を確認する

ドライバーが古いとメモリ リークが発生する可能性があります。すべてのドライバーを最新の状態に保ちます。次のいずれかの方法に従って、デバイス ドライバーを更新します。

  • Windows オプションの更新を通じてドライバーの更新を確認してドライバーを更新できます
  • メーカーの Web サイトにアクセスしてドライバーをダウンロードできます。
  • 無料のドライバー更新ソフトウェアを使用する
  • コンピューターに既に INF ドライバー ファイルがある場合:
    • デバイス マネージャーを開きます。
    • [ドライバー] カテゴリをクリックしてメニューを展開します。
    • 次に、関連するドライバーを選択して右クリックします。
    • [ドライバーの更新]を選択します。
    • 画面上のウィザードに従って、オーディオ ドライバーのアップデートを完了します。

#オペレーティング システム、インストールされているプログラム、Microsoft Store アプリを更新することも役立つ場合があります。

4]パフォーマンスの最適化

Windows のパフォーマンスを調整すると、プロセッサのスケジューリングやメモリ使用量などすべてが管理され、メモリ リークが阻止されます。次の手順に従ってください:

  • [この PC] を右クリックし、左側のペインで [詳細] 設定を選択します。
  • [詳細設定] タブで、[パフォーマンス]、[設定] の順に移動します。
  • 「最高のパフォーマンスを実現するために調整する」にチェックを入れ、「OK」をクリックします。
  • 再起動して、問題が解決したかどうかを確認します。

この簡単な解決策が機能しない場合は、次の解決策を試してください。

5] 起動時に実行されるプログラムを無効にする

メモリ リークの問題を解決するには、問題のあるプログラムを無効にすることが唯一の方法です。タスクマネージャーに移動して、問題のあるプログラムを無効にします。どのプログラムが問題の原因であるかわからない場合は、次の手順を実行します。

  • タスク マネージャーに移動します。
  • [スタートアップ]に移動します。
  • デフォルトで実行する必要のないスタートアップ プログラムを無効にします。

6] ハード ドライブのデフラグを行う

Windows 11/10 ではこれが自動的に行われますが、パフォーマンスを最適化するためにハード ドライブを時々デフラグする必要がある場合があります。

  • [この PC] または [マイ コンピュータ] に移動します。
  • システム ハード ドライブ (通常は C: ドライブ) を右クリックします。
  • [プロパティ] の [ツール] に移動し、[最適化] を選択します。
  • デフラグするドライブを選択し、「分析」を選択します。

新たに断片化した後、コンピューターを再起動します。

7] シャットダウン時にページ ファイルをクリアする

最近はさらに複雑になってきていますが、心配する必要はありません。シャットダウンするたびにページ ファイルをクリアする方法は次のとおりです。

  • 検索に「regedit」と入力して、レジストリ エディタを起動します。
  • 次のパスを入力します:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager内存管理
  • ClearPageFileAtShutDown の値を「1」に変更します。
  • 変更を保存し、デバイスを再起動します。

これは実行する必要があります。シャットダウンプロセスにはさらに時間がかかることに注意してください。

9]スーパー フェッチを無効にする

この Windows サービスは、起動時間を最小限に抑えてパフォーマンスを最適化します。これにより、Windows が RAM の使用状況を管理できるようになります。スーパーフェッチを無効にした生活は不便ですが、必要に応じてそうしてください。少なくともこれだけを試して、問題を切り分けてください。

  • services.msc を検索し、サービス マネージャーに移動します。
  • 「Superfetch」を探して右クリックし、「プロパティ」に移動します。
  • 「停止」を選択します。
  • サービスは、ドロップダウン メニューから「無効」にすることもできます。
  • PC を再起動し、パフォーマンスが向上するかどうかを確認します。

これが機能しない場合は、Superfetch を有効にしてください。

10] マルウェアをチェックする

サードパーティのウイルス対策ソフトウェアまたは Windows に付属の Microsoft Defender を使用して、マルウェアをスキャンして削除します。メモリ リークの原因にならないように、オペレーティング システムをサポートするようにウイルス対策ソフトウェアを必ず更新してください。

11] 設定を変更します

1. 左下隅のタスクバーの「スタート」をクリックし、上の検索ボックスに「コントロールパネル」と入力して開きます。

win11内存泄露如何解决 win11内存泄露原因分析和多种解决办法

#2. 新しいインターフェースに入ったら、右上隅の「表示方法」を「大きなアイコン」に切り替え、「電源オプション」をクリックします。

win11内存泄露如何解决 win11内存泄露原因分析和多种解决办法

#3. 次に、左側の列の [電源ボタンの動作を選択する] をクリックします。

win11内存泄露如何解决 win11内存泄露原因分析和多种解决办法

4. 次に、上部のボックスにある [現在利用できない設定を変更する] をクリックします。

win11内存泄露如何解决 win11内存泄露原因分析和多种解决办法

#5. 最後に、「高速スタートアップを有効にする」を見つけて、小さなボックスのチェックを外して、「変更を保存」をクリックします。

win11内存泄露如何解决 win11内存泄露原因分析和多种解决办法

#12] 設定を変更します

1. グラフィック カード ドライバーが原因でメモリ リークが発生している可能性もあります。

2. 古いバージョンのドライバーを選択して、Intel 公式 Web サイトからダウンロードしてインストールできます。

以上がwin11のメモリリークを解決する方法. win11のメモリリークの原因分析とさまざまな解決策。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。