Windows11/10でメモリリークを見つけて修正する方法
メモリリーク は、メモリ割り当ての誤りによるコンピュータプログラムのリソースの置き忘れです。これは、使用されていないRAMの場所が解放されていない場合に発生します。メモリリークは、必要以上にRAMを使用するプログラムを指すスペースリークと混同しないでください。 Windows 11/10/8/7システムでのメモリリークは、使用されていないにもかかわらずメモリにアクセスできないときに発生したと言われています。
Windows11/10のメモリリーク
始める前に、メモリリークはデバッグするソフトウェアの問題であることを知っておく必要があります。たとえば、Java、JavaScript、C / C ++、Windowsなどです。RAMやハードディスクを物理的に交換する必要はありません。
なぜそれが悪いのか
これはバグであり、システムの欠陥であるため、メモリリークが悪いことは明らかです。しかし、それがシステムにどのように影響するかを調べてみましょう。
- 使用していないときでもメモリが解放されないため、メモリが枯渇します。
- メモリが使い果たされると、ソフトウェアが古くなります。
- 使用可能なメモリが減少すると、応答時間が長くなり、システムのパフォーマンスが低下します。
- チェックされていないメモリリークは、最終的にアプリケーションのクラッシュにつながる可能性があります。
メモリリークを特定するには、プログラマーはプログラムのソースコードにアクセスできる必要があります。
リークの特定
問題を解決するには、まず問題を特定する必要があります。メモリリークを特定するための基本的な手順は次のとおりです。
- 肯定 :リークが発生したかどうかを判断します。
- カーネルモードのメモリリークの検出 :カーネルモードのドライバコンポーネントによって引き起こされたリークを特定します。
- ユーザーモードのメモリリークの検出 :ユーザーモードのドライバーまたはアプリによって引き起こされたリークを特定します。
メモリ割り当て
アプリケーションがRAMを割り当てるさまざまなモードがあります。使用後にスペースが解放されない場合、割り当てのモードに関係なく、メモリリークが発生します。一般的な割り当てパターンは次のとおりです。
- ヒープメモリ割り当て用のHealAlloc関数。 C /C++ランタイムに相当するものはmallocとnewです。
- OSから直接割り当てるためのVirtualAlloc関数。
- アプリのカーネルメモリを保持するKernel32API。例、CreateFile、CreateThread。
- User32APIとGdi32API。
Windowsでのメモリリークの防止
予防は治療よりも優れていることは誰もが知っているので、メモリリークを防ぐ方法をいくつか紹介します。
習慣の監視
個々のプログラムやアプリケーションによる異常なRAM使用量に注意する必要があります。 CTRL + SHIFT + ESC を押すと、Windowsタスクマネージャーに移動できます。 ハンドル、ユーザーオブジェクト、GDIオブジェクトなどの列を追加します。
これにより、リソースの使用状況を簡単に監視できます。
読む :コンピュータのメモリの種類は何ですか?
メモリリークを診断するためのMicrosoftツール
さまざまなツールが、さまざまな割り当てモードのメモリリークを診断します。
- ApplicationVerifierはヒープリークを診断します。
- UMDH(Windowsデバッグツールのコンポーネント)は、ヒープメモリの割り当てを監視することにより、個々のプロセスのリークを診断します。
- RAM使用量を徹底的に分析するためのトレースキャプチャ。
- Xperfもヒープ割り当てパターンを追跡します。
- CRT Debug Heapは、ヒープの割り当てを追跡するだけでなく、コーディング手法を有効にしてリークを最小限に抑えます。
- JavaScriptメモリリークディテクタは、コード内のメモリリークをデバッグします。
使用上のヒント
- カーネルを使用するハンドル sおよびWin32リソースとヒープ割り当て用のその他のスマートポインタ。
- ATLライブラリからカーネル割り当ての自動リソース管理用のクラスを取得します。 C++標準にはauto_ptrがあります ヒープ割り当て用。
- _com_ptr_t を使用して、COMインターフェイスポインタを「スマートポインタ」内にカプセル化します。 または_bstr_t または_variant_t 。
- .NETコードの異常なメモリ使用量を監視します。
- 関数の複数の出口パスを避けて、関数の終わりまでにほとんどのブロックの変数から割り当てを解放できるようにします。
- _finallyブロック内のすべての割り当てを解放した後でのみ、ネイティブ例外を使用します。 C ++例外を使用するために、すべてのヒープをラップし、割り当てをスマートポインターに処理します。
- 常にPropVariantClearに電話してください PROPVARIANTオブジェクトを再初期化または破棄する前に機能します。
Windowsでのメモリリークのトラブルシューティング
メモリリークを防ぐさまざまな方法と同様に、メモリリークを防ぐさまざまな方法があります。ただし、始める前に、まずシステムの復元ポイントを作成することを忘れないでください。
1]プロセスを閉じて再起動します。
不要なプロセスがRAMを大量に消費していることがわかった場合は、タスクマネージャーでプロセスを終了できます。解放されたスペースを他のプロセスで使用できるようにするには、デバイスを再起動する必要があります。再起動しないと、メモリリークの問題は解決されません。 PCの速度を低下させるバグがある特定のプロセスの1つは、RuntimeBrokerです。それを無効にするだけでうまくいくか試してみてください。
2]メモリ診断ツール
Windows用の組み込みのメモリ診断ツールにアクセスするには:
- 重要な作業をすべて保存します。
- Win + Rを押します 実行を開くには ウィンドウ。
- コマンドmdsched.exeを入力します 実行で ウィンドウ。
- PCを再起動します。
- 再起動後、基本スキャンを実行するか、「詳細strong>」に進みます 「テストミックス」などのオプション 」または「パスカウント ’。
- F10を押します テストを開始します。
これらはまだ一時的な修正です。
3]ドライバーの更新を確認する
古いドライバはメモリリークを引き起こします。すべてのドライバーを最新の状態に保ちます:
- Win + Rを押します 実行を開きます 窓。 devmgmt.mscと入力します Enterキーを押します。 デバイスマネージャーに移動します 。
- 古いドライバーを確認し、すべて更新します。
- アップデートについては、見逃している可能性があります。WindowsUpdateをチェックインしてください。
これは簡単でした。
4]パフォーマンスの最適化
Windowsのパフォーマンスを調整すると、プロセッサのスケジューリングやメモリ使用量を含むすべてが管理され、メモリリークが防止されます。次の手順に従ってください:
- 「このPC」を右クリックします 」を選択し、「詳細strong>」を選択します 左ペインのの設定。
- 「詳細strong>」の下 」タブで、「パフォーマンス」に移動します 」の後に「設定」が続きます ’。
- 「最高のパフォーマンスに調整する」を確認します ’をクリックし、[ OK ]をクリックします 。
- 再起動して、問題が解決したかどうかを確認します。
この単純な解決策が機能しなかった場合は、次の解決策を試してください。
5]起動時に実行されているプログラムを無効にする
面倒なプログラムを無効にすることが、メモリリークの問題を取り除く唯一の方法です。タスクマネージャに移動し、トラブルシューティングプログラムを無効にします。どのプログラムが問題を引き起こしているのかわからない場合は、次のようにしてください。
- 「タスクマネージャー」に移動します ’。
- 「スタートアップ」に移動します ’。
- デフォルトで実行する必要のないスタートアッププログラムを無効にします。
6]ハードドライブのデフラグ
Windows 10はこれを自動的に実行しますが、パフォーマンスを最適化するために、ハードドライブのデフラグを時々行う必要がある場合があります。
- 「このPC」に移動します 」または「マイコンピュータ ’。
- システムのハードドライブ(通常はC:ドライブ)を右クリックします。
- 「ツール」に移動します 「プロパティ」の下の「 ‘を選択し、‘最適化を選択します ’。
- デフラグするドライブを選択し、[分析]を選択します ’。
新しい断片化の後でコンピュータを再起動します。
7]シャットダウン時のClearPageファイル
今は複雑になっていますが、心配しないでください。シャットダウンするたびにページファイルをクリアする方法は次のとおりです。
- 「regedit」と入力します 検索でレジストリエディタを起動します。
- このパスを入力してください:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- ClearPageFileAtShutDownの値を「1」に変更します。
- 変更を保存してデバイスを再起動します。
これはそれをするべきです。シャットダウンプロセスにはもう少し時間がかかることを忘れないでください。
9]スーパーフェッチを無効にする
このWindowsサービスは、起動時間を最小限に抑えることでパフォーマンスを最適化します。これにより、WindowsでRAMの使用量を管理できます。 Superfetchを無効にした後の生活は便利ではありませんが、必要に応じて行ってください。少なくともこれだけで問題を特定してみてください:
- services.mscを検索します サービスマネージャーに移動します。
- 「スーパーフェッチ」を探します 」を右クリックして[プロパティ]に移動します ’。
- 「停止」を選択します ’。
- また、「無効にする ’ドロップダウンメニューからのサービス。
- PCを再起動して、パフォーマンスが向上したかどうかを確認します。
これが機能しなかった場合は、スーパーフェッチを有効にします。
10]マルウェアをチェックします
サードパーティのウイルス対策ソフトウェアまたはWindows10の社内WindowsDefenderを使用して、マルウェアをスキャンして排除します。 OSをサポートするようにウイルス対策ソフトウェアが更新されていることを確認して、メモリリークの原因にならないようにしてください。
メモリリークを見つけたり防止したりする必要があるかもしれないすべての解決策がここにあります。メモリリークの詳細については、MSDNとMicrosoftを参照してください。
-
Windows 11/10 PC で Hal_Initialization_Failed エラーを修正する方法
Hal_Initialization_failed エラー とは、PC がスリープ状態から復帰したときに発生する厄介な BSOD エラーです。通常はPCの再起動で直りますが、しっかり直さないと頻発する場合があります。 Windows の Hal_Initialization_failed は、古い OS バージョンを実行しているコンピューターに表示されることが多く、PC は (BSOD) ブルー スクリーン オブ デス エラーの後に複数回再起動する傾向があります。 Windows PC で Hal_Initialization_Failed エラーが発生する原因は? Windows 11
-
Windows 11/10 で白い画面を修正する方法
PC で Windows 10 または Windows 11 を使用していますか?もしそうなら、私たちはあなたが死の白い画面を経験したと仮定します.これは、ユーザーがコンピューターを使用しているときに時々目にする可能性のある一般的な問題の 1 つです。 Windows を日常的に使用していると、Windows に関連するさまざまな問題が発生する可能性があります。 Windows の使用中にユーザーが直面する最も一般的な問題の 1 つは、Windows 11 (WSOD) の「死のホワイト スクリーン」です。ホワイト スクリーン エラーは通常、Windows にログインした後、空白または白い画