上級サポート エンジニアの経験お伝えしま …...de:code 2019 dt03...

46
de:code 2019 DT03 上級サポート エンジニアの経験お伝えします Visual Studio 2019 でメモリー リークを追え ! 日本マイクロソフト株式会社 カスタマーサービス & サポート本部 エスカレーション エンジニア 大介

Upload: others

Post on 20-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

de:code 2019 DT03

上級サポート エンジニアの経験お伝えします

Visual Studio 2019 でメモリー リークを追え!

日本マイクロソフト株式会社

カスタマーサービス & サポート本部 エスカレーション エンジニア

牧 大介

Page 2: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

今日持ち帰って頂きたいこと

Page 3: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

はじめるまえに…

Page 4: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

メモリーリーク?

Page 5: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

「メモリーリークが発生しています」というエラーは起きないですよね?

Page 6: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 7: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 8: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

• 「なんだかわからないが 動かない/動いてない!」

実際に現場で起きること

Page 9: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

• メモリー使用量とは?

起きてみてわかること (1)

Page 10: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

• 普通ってナンだ!?

• メモリー使用量内訳はどうやって調べればいいの?

• 怪しいところを見つけだすにはどうすればいいの?

それぞれについて、例題からお話しします

起きてみてわかること (2)

Page 11: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

意図的にメモリー肥大化を発生させる

Page 12: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

C# WinFormアプリケーションでOutofMemoryExceptionが発生。現在の物理メモリは 8GBですが、いくつにすればいいですか?

質問

Page 13: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

仮想メモリー

Page 14: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

仮想メモリー

Page 15: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

プロセスのメモリー空間

Page 16: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 17: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 18: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 19: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 20: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!
Page 21: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

メモリーの読みかた

Page 22: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Private Bytes コミットサイズ

• ワーキングセットWorkingsets

パフォーマンスカウンター

Page 23: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

アプリケーションのメモリー不足エラーは、一般的にプロセスのメモリー空間不足です

システム全体の不足ではありません

物理メモリーが足りなくなれば、システム全体へ影響が出ます

回答

Page 24: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

C#で、関数を抜けたのにプライベート変数のメモリーが解放されません。バグですか?

質問

Page 25: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

Page 26: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

.NET メモリーセグメント

Page 27: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

.NETガベージコレクター

Page 28: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

.NET メモリー セグメント

ファイナライザーガベージコレクター

Page 29: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

ガベージコレクター

Page 30: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

ガベージコレクターは自律的に動作し捨てるのも気分次第です意図的に動作させるとわかりやすいです

ガベージコレクターにもコストがかかります→ 全スレッドを停止させる場合があります

回答

Page 31: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

プロセスがどんなオブジェクトでメモリーを使用しているか知りたいです良い方法はありますか?

質問

Page 32: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

ダンプファイルを取りましょう

Page 33: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

EXE dlldll dll dll

dll

Thread Heap

Image

int a = 10;string b = “Test”;

byte c = 255;

Assembly

Managed Thread

Managed Heap

MyApp.dll WaitItem()

mscorwks.dll SubFunc()

kernel32.dll ThreadStart()

Page 34: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

ダンプ解析

Page 35: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

リーク時のダンプ解析の考え方

Page 36: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

ダンプの問題点…

Page 37: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

windbg ダンプ解析は30分

Page 38: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

時間泥棒なわりに実入りが少ない

Page 39: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Demo

Visual Studio 2019 でメモリー解析

Page 40: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Visual Studioのメモリ解析!

Page 41: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Visual Studioのメモリ解析!

Page 42: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

Visual Studioのメモリ解析!

Page 43: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

https://aka.ms/decode18Ad05

Visual Studio 2019のデバッグ強化ポイント

Page 44: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

(ダンプ)、プロファイル

まとめ

Page 45: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

まとめ

Page 46: 上級サポート エンジニアの経験お伝えしま …...de:code 2019 DT03 上級サポートエンジニアの経験お伝えします Visual Studio 2019 でメモリーリークを追え!

© 2018 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

© 2019 Microsoft Corporation. All rights reserved.

本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。