事務所

Windows 10/8/7でメモリリークを検出して修正する

The 50MB Windows 7 CD - Overview & Demo

The 50MB Windows 7 CD - Overview & Demo

目次:

Anonim

A Memory Leak は、メモリ割り当ての誤りによるコンピュータプログラム内のリソースの置き換えです。これは、使用されていないRAMの場所が未リリースの場合に発生します。メモリリークは、必要以上にRAMを使用するプログラムを指す空間リークと混同しないでください。

Windows 10でメモリリークが発生する

作業を開始する前に、メモリリークが発生している可能性があります。メモリリークは、Java、JavaScript、C / C ++、Windowsなどのデバッグのためのソフトウェアの問題です。物理的にRAMやハードディスクを交換する必要はありません。

悪い理由

リークは悪いです、システムの欠陥です。しかし、それがシステムにどの程度影響を与えるかを見てみましょう:

  1. メモリが使用されていなくても解放されないので、メモリが枯渇します。
  2. メモリが使い果たされると、ソフトウェアが劣化します。応答時間が長くなり、システムのパフォーマンスが低下します。
  3. チェックされていないメモリリークが、アプリケーションのクラッシュにつながる可能性があります。
  4. メモリリークを特定するには、プログラマは

リークの位置づけ

問題を解決するには、最初に問題を特定する必要があります。

カーネルモードのメモリリークの検出

  1. :カーネルモードのドライバコンポーネントによって引き起こされたリークの検出リークが発生したかどうかの判定
  2. ユーザーモードのメモリリークの検出
  3. :ユーザーモードのドライバーまたはアプリケーションによるリークの検出メモリー割り当て

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

ヒープメモリ割り当て用のHealAlloc関数。

  1. OSからの直接割り当てのためのVirtualAlloc関数
  2. アプリケーションのカーネルメモリを保持するためのKernel32 API。
  3. User32 APIとGdi32 API
  4. メモリリークの防止

メモリリークを防ぐいくつかの方法があります。 >個々のプログラムやアプリケーションによって異常なRAM使用が発生していることに注意する必要があります。

CTRL + SHIFT + ESC

を押してハンドル、ユーザーオブジェクト、GDIオブジェクトなどの列を追加することで、Windowsのタスクマネージャーにアクセスできます。

これにより、リソースの使用状況を簡単に監視できます。 アプリケーション検証プログラムがヒープリークを診断する UMDH(Windows Debugging Toolsのコンポーネント)は、ヒープメモリ割り当てを監視して個々のプロセスのリークを診断します。

Xperfもヒープ割り当てパターンを追跡します

CRTデバッグヒープはヒープ割り当てを追跡するだけでなく、コーディングを有効にしてリークを最小限に抑える

JavaScriptメモリリーク検出器はコード内のメモリリークをデバッグします

  1. 使用上のヒント
  2. Win32リソースとヒープ割り当て用のカーネル
  3. HANDLE
  4. とそのような他のスマートポインタを使用
  5. カーネル割り当ての自動リソース管理のクラスを取得ATLライブラリ
  6. _com_ptr_t

または

  1. _bstr_t または _variant_tの助けを借りて、 "スマートポインタ"内のCOMインターフェイスポインタをカプセル化します。
  2. .NETコードで異常なメモリ使用状況を監視する 関数の終了時にほとんどのブロックの変数から割り当てを解放できるように、関数の終了パスを避ける ネイティブ例外のみを使用する_finallyブロック内のすべての割り当てを解放した後C ++例外を使用するには、すべてのヒープをラップしてスマートポインタに割り当てます。
  3. PROPVARIANTオブジェクトを再初期化または廃棄する前に PropVariantClear 関数を呼び出す Windowsでメモリリークをトラブルシューティングする メモリリークを防止するさまざまな方法と同様に、 1]プロセスを閉じて再起動します。
  4. 不要なプロセスが多すぎるRAMを占有している場合は、タスクマネージャでプロセスを終了できます。解放されたスペースが他のプロセスで使用できるように、デバイスを再起動する必要があります。再起動なしでメモリリークの問題は解決されません。 PCを遅くするバグがある特定のプロセスの1つがRuntime Brokerです。
  5. メモリ診断ツール
  6. 組み込みメモリ診断ツール(Windows用)にアクセスするには:
  7. 重要な作業をすべて保存します。Win + R

を押して、

実行

ウィンドウを開く

実行

ウィンドウにコマンド

  1. mdsched.exe
  2. を入力する PCを再起動する 基本スキャンを実行するか、 ` テストミックス `または `
  3. パスカウント `のような ` 高度な `オプションを選択します。
  4. 3ドライバのアップデートを確認する古いドライバはメモリリークを引き起こします。すべてのドライバを更新したままにする: Win + R を押して実行ウィンドウを開きます。
  5. devmgmt.msc と入力し、Enterキーを押します。 デバイスマネージャ

に移動します

古いドライバをチェックし、すべて更新します

見逃した可能性のあるアップデートについては、Windows Updateにチェックインしてください

  1. 4]パフォーマンスを最適化する パフォーマンスを向上させるためにWindowsを調整すると、プロセッサのスケジューリングやメモリ使用などのすべてが管理され、メモリリークが防止されます。 このPC を右クリックし、左ペインの 詳細 設定を選択します。 `詳細
  2. パフォーマンス

」、「

設定

」、

  1. ベストパフォーマンス」をチェックして
  2. 起動時に実行されるプログラムを無効にする問題のあるプログラムを無効にする 問題が解決したかどうかを確認してください。メモリリークの問題を取り除く唯一の方法です。タスクマネージャーに移動し、トラブルシューティングプログラムを無効にします。 `タスクマネージャ`
  3. `起動`に移動します。6] Defrag Hard Drive
  4. Windows 10は自動的にこれを行いますが、パフォーマンスを最適化するためにハードドライブを時折デフラグする必要があります。

このPC

または

  1. マイコンピュータ `に移動システムのハードドライブ(通常はC:ドライブ)を右クリック
  2. `Optimize
  3. `を選択します。

最適化するドライブを選択し、`

Analyze

  1. `を選択します。Properties >新しい断片化の後でコンピュータを再起動します。 7]シャットダウン時のClearPageファイル
  2. 今は複雑になっていますが、心配はありません。
  3. 検索で「 regedit 」と入力すると、レジストリエディタが起動します。 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management の値を変更します。 910> Superfetchを無効にするこのWindowsサービスは、起動時間を最小限に抑えてパフォーマンスを最適化します。
  4. ClearPageFileAtShutDownを `1`に設定します。それはWindowsがRAMの使用を管理することができます。スーパーフェッチを無効にした後の人生は便利ではありませんが、必要があればやってください。 Search services.msc

を開き、サービスマネージャーに行きます。

`

Superfetch

  1. `を探して右クリックして問題を切り分けてください プロパティ `
  2. ` 停止
  3. `を選択 ドロップダウンメニューからサービスを
  4. 無効にする

PCを再起動し、パフォーマンスが向上しているかどうかを確認します。

これが動作しない場合は、スーパーフェッチを有効にします。

10]マルウェアのチェック

  1. マルウェアをスキャンして排除するには、サードパーティのウイルス対策ソフトウェアまたはWindows 10の社内Windows Defenderを使用します。あなたのOSをサポートするようにウイルス対策ソフトウェアがアップデートされて、メモリリークの原因にならないようにしてください。 メモリリークを検出または防止する必要があるすべてのソリューションがここにあります。メモリリークの詳細については、MSDNおよびMicrosoftで読むことができます。