あメモリリークメモリ割り当ての誤りにより、コンピュータ プログラム内のリソースが誤って配置されることです。それは次のときに起こります。ラム使用されていない場所は未公開のままです。メモリ リークを、プログラムが必要以上に多くの RAM を使用することを指すスペース リークや高いメモリ使用量と混同しないでください。 Windows 11/10/8/7システムでのメモリリークは、使用されていないにもかかわらずメモリにアクセスできない場合に発生すると言われています。
Windows 11/10のメモリリーク
メモリ リークは、Java、JavaScript、C/C++、Windows などでデバッグすべきオペレーティング システムまたはソフトウェアの問題であることを知っておく必要があります。スペース リークやメモリ使用量の増加と混同しないでください。 RAM やハードディスクを物理的に交換する必要はありません。
メモリリークがなぜ悪いのか
メモリ リークはバグ、オペレーティング システムまたはソフトウェアの欠陥であるため、問題が発生します。しかし、それがシステムにどのような影響を与えるかを正確に見てみましょう。
- 使用していないときでもメモリが解放されないため、メモリが枯渇してしまいます。
- メモリが使い果たされると、ソフトウェアが老化します。
- 使用可能なメモリが減少すると、応答時間が増加し、システムのパフォーマンスが低下します。
- メモリ リークがチェックされていないと、最終的にアプリケーションのクラッシュにつながる可能性があります。
メモリ リークを特定するには、プログラマはプログラムのソース コードにアクセスする必要があります。
メモリリークを特定する方法
問題を解決するには、まず問題を特定する必要があります。メモリ リークを特定するための基本的な手順は次のとおりです。
- 肯定:漏れが発生したかどうかを判断します。
- カーネルモードのメモリリークの発見: カーネル モード ドライバー コンポーネントによって引き起こされるリークの特定。
- ユーザーモードのメモリリークの発見: ユーザーモードドライバーまたはアプリが原因で発生したリークを特定します。
メモリ割り当てはどのように行われるか
アプリケーションが RAM を割り当てるには、さまざまなモードがあります。使用後に領域が解放されていない場合、割り当てモードに関係なくメモリ リークが発生します。一般的な割り当てパターンには次のようなものがあります。
- ヒープ メモリを割り当てるための HealAlloc 関数。 C/C++ ランタイムに相当するものは、malloc と new です。
- OSから直接割り当てるVirtualAlloc機能。
- アプリのカーネル メモリを保持する Kernel32 API。例、CreateFile、CreateThread。
- User32 API と Gdi32 API。
Windows でメモリ リークを防ぐ方法
治療よりも予防が優れていることは誰もが知っているため、システムを監視することが重要です。
個々のプログラムやアプリケーションによる異常な RAM 使用量に注意する必要があります。を押すと、Windows タスク マネージャーに移動できます。CTRL+SHIFT+ESCハンドル、ユーザー オブジェクト、GDI オブジェクトなどの列を追加します。
これにより、リソースの使用状況を簡単に監視できます。
メモリ リークを診断するための Microsoft ツール
さまざまなツールが、さまざまな割り当てモードのメモリ リークを診断します。
- Application Verifier はヒープ リークを診断します。
- UMDH (Windows デバッグ ツールのコンポーネント) は、ヒープ メモリの割り当てを監視することで、個々のプロセスのリークを分析します。
- RAM 使用量を徹底的に分析するためのトレース キャプチャ。
- Xperf もヒープ割り当てパターンを追跡します。
- CRT デバッグ ヒープは、ヒープ割り当てを追跡するだけでなく、リークを最小限に抑えるためのコーディング方法も有効にします。
- JavaScript Memory Leak Detector は、コード内のメモリ リークをデバッグします。
使用上のヒント
- カーネルを使用するハンドルs および Win32 リソースおよびヒープ割り当て用のその他のスマート ポインター。
- カーネル割り当ての自動リソース管理用のクラスを ATL ライブラリから取得します。 C++ 標準には、auto_ptrヒープ割り当て用。
- の助けを借りて、COM インターフェイス ポインターを「スマート ポインター」内にカプセル化します。_com_ptr_tまたは_bstr_tまたは_variant_t。
- .NET コードの異常なメモリ使用量を監視します。
- 関数の複数の出口パスを避けて、関数の終了までにほとんどのブロックの変数から割り当てを解放します。
- ネイティブ例外は、_finally ブロック内のすべての割り当てを解放した後にのみ使用してください。 C++ 例外を使用するために、すべてのヒープとハンドルの割り当てをスマート ポインターにラップします。
- 常に電話してくださいPropVariantClearPROPVARIANT オブジェクトを再初期化または破棄する前に関数を実行してください。
Windows 11/10のメモリリークを修正する方法
メモリ リークを防ぐさまざまな方法と同様に、メモリ リークを阻止するさまざまな方法があります。ただし、始める前に、次のことを忘れないでください。最初にシステムの復元ポイントを作成します。
1] プロセスを閉じて再起動します
不要なプロセスが RAM を過剰に占有している場合は、タスク マネージャーでプロセスを終了できます。解放された領域を他のプロセスで使用できるようにするには、デバイスを再起動する必要があります。再起動しないとメモリ リークの問題は解決されません。ランタイム ブローカーは、PC の速度を低下させることが知られているプロセスの 1 つです。それを無効にするだけで機能するかどうかを確認してください。
2]メモリ診断ツール
内蔵のメモリ診断ツールWindowsの場合:
- 重要な作業をすべて保存します。
- プレス勝利+Rを開くには走るウィンドウ。
- コマンドを入力しますmdsched.exeで走るウィンドウ。
- PCを再起動します。
- 再起動後、基本スキャンを実行するか、「高度な' のようなオプション 'テストミックス' または 'パス数'。
- プレスF10テストを開始します。
これらはまだ一時的な修正です。
3] ドライバーのアップデートを確認する
ドライバーが古いとメモリ リークが発生します。すべてのドライバーを最新の状態に保ちます。以下のいずれかの方法に従って、デバイス ドライバーを更新します。
- してもいいですドライバーのアップデートを確認するWindows のオプションのアップデートを介して、ドライバーを更新してください
- メーカーのサイトにアクセスして、ドライバーをダウンロードする。
- を使用してください無料のドライバー更新ソフトウェア
- INF ドライバー ファイルが既にコンピューター上にある場合は、次のようにします。
- 開けるデバイスマネージャ。
- ドライバー カテゴリをクリックしてメニューを展開します。
- 次に、関連するドライバーを選択して右クリックします。
- 選択ドライバーを更新する。
- 画面上のウィザードに従って、オーディオ ドライバーの更新を完了します。
オペレーティング システム、インストールされているプログラム、Microsoft Store アプリを更新することも役立つ場合があります。
4] パフォーマンスを最適化する
Windows のパフォーマンスを調整するプロセッサのスケジューリングやメモリ使用量を含むすべてを管理し、メモリ リークを阻止します。次の手順に従います。
- 「」を右クリックしますこのパソコン' を選択し、'高度な' 左側のペインの設定。
- 「」の下に高度な「」タブ、「」に移動しますパフォーマンス'、 に続く '設定'。
- チェック '最高のパフォーマンスを実現するために調整する' をクリックしてくださいわかりました。
- 再起動して問題が解決したかどうかを確認します。
この簡単な解決策が機能しない場合は、次の解決策を試してください。
5] スタートアップ時に実行されるプログラムを無効にする
メモリリークの問題を解決するには、問題のあるプログラムを無効にすることが唯一の方法です。タスク マネージャーに移動し、トラブルメーカー プログラムを無効にします。どのプログラムが問題を引き起こしているのかわからない場合は、次の操作を行ってください。
- 「」に移動しますタスクマネージャー'。
- 「」に移動します起動する'。
- スタートアッププログラムを無効にするデフォルトで実行する必要はありません。
6]ハードドライブのデフラグ
Windows 11/10 ではこれが自動的に行われますが、必要な場合があります。ハードドライブをデフラグするパフォーマンスを最適化するために時々:
- 「」に移動しますこのパソコン' または '私のコンピュータ'。
- システム ハード ドライブ (通常は C: ドライブ) を右クリックします。
- 「」に移動しますツール' 下 'プロパティ' を選択し、'最適化する'。
- デフラグするドライブを選択し、「」を選択します。分析する'。
新しい断片化が完了したら、コンピューターを再起動します。
7]シャットダウン時のClearPageファイル
現在は複雑になってきていますが、心配しないでください。その方法は次のとおりですシャットダウンするたびにページファイルをクリアする:
- タイプ登録編集「検索」をクリックしてレジストリ エディタを起動します。
- 次のパスを入力します。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- の値を変更しますClearPageFileAtShutDown を「1」にします。
- 変更を保存し、デバイスを再起動します。
これで済むはずです。シャットダウンプロセスにはもう少し時間がかかることに注意してください。
9] スーパーフェッチを無効にする
この Windows サービスは、起動時間を最小限に抑えてパフォーマンスを最適化します。これにより、Windows が RAM の使用状況を管理できるようになります。障害を負った後の生活スーパーフェッチ便利ではありませんが、必要に応じて実行してください。少なくともこれだけを試して問題を切り分けてください。
- 検索サービス.mscそしてサービスマネージャーに移動します。
- 探す 'スーパーフェッチ' を選択し、右クリックして ' に移動します。プロパティ'。
- 「」を選択してください停止'。
- また '無効にする' ドロップダウン メニューからサービスを選択します。
- PC を再起動し、パフォーマンスが改善されたかどうかを確認します。
これが機能しない場合は、スーパーフェッチを有効にしてください。
10] マルウェアをチェックする
サードパーティのウイルス対策ソフトウェアまたは Windows 社内の Microsoft Defender を使用して、マルウェアをスキャンして削除します。メモリ リークの原因にならないように、OS をサポートするようにウイルス対策ソフトウェアが更新されていることを確認してください。
メモリ リークを見つけたり防止したりするために必要なすべてのソリューションがここにあります。メモリ リークの詳細については、次のサイトを参照してください。MSDNそしてマイクロソフト。