Submit Search
Upload
CLR/H第63回勉強会ライトニングトーク
•
0 likes
•
889 views
Jun-ichi Sakamoto
Follow
More real animation edition is here: http://bit.ly/qWASUZ
Read less
Read more
Technology
Report
Share
Report
Share
1 of 15
Download now
Download to read offline
Recommended
MmapScanner
MmapScanner
Masahiro Tomita
Inbound and content marketing made easy ebook wc (2)
Inbound and content marketing made easy ebook wc (2)
1paramount
Intro. to Savings
Intro. to Savings
oplan1mg
DOE's Solar Instructor Training Network: Building Today's Clean Energy Workforce
DOE's Solar Instructor Training Network: Building Today's Clean Energy Workforce
Interstate Renewable Energy Council
Ja, Ik Wil Leads 06 06 2012
Ja, Ik Wil Leads 06 06 2012
Bennet Knepper
Ipdi.Person2 Person
Ipdi.Person2 Person
Laura Alonso
What it all means: solar regulatory world 101
What it all means: solar regulatory world 101
Interstate Renewable Energy Council
Ideas - Nissan Parking Contest
Ideas - Nissan Parking Contest
manoj manduva
Recommended
MmapScanner
MmapScanner
Masahiro Tomita
Inbound and content marketing made easy ebook wc (2)
Inbound and content marketing made easy ebook wc (2)
1paramount
Intro. to Savings
Intro. to Savings
oplan1mg
DOE's Solar Instructor Training Network: Building Today's Clean Energy Workforce
DOE's Solar Instructor Training Network: Building Today's Clean Energy Workforce
Interstate Renewable Energy Council
Ja, Ik Wil Leads 06 06 2012
Ja, Ik Wil Leads 06 06 2012
Bennet Knepper
Ipdi.Person2 Person
Ipdi.Person2 Person
Laura Alonso
What it all means: solar regulatory world 101
What it all means: solar regulatory world 101
Interstate Renewable Energy Council
Ideas - Nissan Parking Contest
Ideas - Nissan Parking Contest
manoj manduva
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Jun-ichi Sakamoto
Pre-render Blazor WebAssembly on static web hosting at publishing time
Pre-render Blazor WebAssembly on static web hosting at publishing time
Jun-ichi Sakamoto
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Jun-ichi Sakamoto
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Azure App Service Authentication
Azure App Service Authentication
Jun-ichi Sakamoto
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
Jun-ichi Sakamoto
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Jun-ichi Sakamoto
Ohotech特盛#14 セッション4 予告編
Ohotech特盛#14 セッション4 予告編
Jun-ichi Sakamoto
CLR/H 第99回勉強会ライトニングトーク
CLR/H 第99回勉強会ライトニングトーク
Jun-ichi Sakamoto
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Jun-ichi Sakamoto
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
Jun-ichi Sakamoto
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
Jun-ichi Sakamoto
One horror stories around NuGet
One horror stories around NuGet
Jun-ichi Sakamoto
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
Jun-ichi Sakamoto
セッション中に Twitter につぶやく!
セッション中に Twitter につぶやく!
Jun-ichi Sakamoto
More Related Content
More from Jun-ichi Sakamoto
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Jun-ichi Sakamoto
Pre-render Blazor WebAssembly on static web hosting at publishing time
Pre-render Blazor WebAssembly on static web hosting at publishing time
Jun-ichi Sakamoto
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Jun-ichi Sakamoto
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Azure App Service Authentication
Azure App Service Authentication
Jun-ichi Sakamoto
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
Jun-ichi Sakamoto
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Jun-ichi Sakamoto
Ohotech特盛#14 セッション4 予告編
Ohotech特盛#14 セッション4 予告編
Jun-ichi Sakamoto
CLR/H 第99回勉強会ライトニングトーク
CLR/H 第99回勉強会ライトニングトーク
Jun-ichi Sakamoto
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Jun-ichi Sakamoto
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
Jun-ichi Sakamoto
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
Jun-ichi Sakamoto
One horror stories around NuGet
One horror stories around NuGet
Jun-ichi Sakamoto
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
Jun-ichi Sakamoto
セッション中に Twitter につぶやく!
セッション中に Twitter につぶやく!
Jun-ichi Sakamoto
More from Jun-ichi Sakamoto
(20)
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Pre-render Blazor WebAssembly on static web hosting at publishing time
Pre-render Blazor WebAssembly on static web hosting at publishing time
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Azure App Service Authentication
Azure App Service Authentication
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Ohotech特盛#14 セッション4 予告編
Ohotech特盛#14 セッション4 予告編
CLR/H 第99回勉強会ライトニングトーク
CLR/H 第99回勉強会ライトニングトーク
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
One horror stories around NuGet
One horror stories around NuGet
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
セッション中に Twitter につぶやく!
セッション中に Twitter につぶやく!
CLR/H第63回勉強会ライトニングトーク
1.
ブログ "Developer@ADJUST" http://devadjust.exblog.jp/ Twitter: @jsakamoto
2.
こんなシナリオ
CSV形式の文字列を、オンメモリで生成し て、ブラウザに返す .NET3.5 Webアプリ。 32bit OS / 物理メモリ2GB Unicodeで 24MB、1千2百万文字くらいの サイズの CSV をオンメモリ生成。 OutOfMemoryException 発生。
3.
たかだか24MBを生成するのに 何故メモリ不足!?
StringBuilder に次々と Append すること で、CSV 文字列を構築。 StringBuilder は、容量いっぱいまで充填さ れると、今の容量x2倍のメモリ領域を確保、 充填済みの文字列をコピーすることで伸張。 つまり、連続したメモリ領域の確保が必要。 メモリの空き領域が断片化していると伸張 時に OutOfMemoryException 発生。
4.
さらに LargeObjectHeap の仕様が...
85KB を越えるオブジェクトは LargeObjectHeap と呼ばれる専用のメモリ 管理下におかれる。 LOH は (当たり前だが) GC は行われる。 しかし、コンパクションは行われない。 LOH に新たなオブジェクトを確保しようと すると、LOHに残存する最後尾のオブジェ クトのあとに、メモリ領域確保する。
5.
6.
StringBuilder オブ
LOH最後尾に残存し ジェクトにAppned ている、何かしらの 済みの部分 オブジェクト Large Object Heap StringBuilder オブ ジェクトの容量
7.
out of memory
8.
テンポラリファイルを使うことも 一瞬考えた。が...
次々とテンポラリファイルに Write、 最後にそのテンポラリファイルの内容をブ ラウザに返信すれば、メモリ不足例外は発 生しない。 しかし、物理メモリ2G積んでるのに、たか だか24MBの生成に失敗すること自体、負け てる気がして許せなかった。
9.
LinkedList<T>使ってみた
LinkedList<T> は、連続したメモリ領域を必 要としない。 メモリ断片化の影響を受けない。 CSV生成に成功! ...しかし!GC発生時にアプリが応答無しに! 約12万個のオブジェクトが生成されていた。
10.
List<T>使ってみた
LinkedList は CSV の素片 string オブジェクト に加えて、コンテナも生成される。 すなわちオブジェクト数が2倍に。 List<T> で CSV の素片を溜めれば、オブジェ クト数は6万個まで抑えられるはず... やってみたら、List<T>を伸張するところで OutOfMemoryException。 List<T> も StringBuilder と同じ伸張をするので、 メモリ断片化か、LOH問題に抵触するほど大きく なってしまった模様。
11.
12.
StringBuilder と LinkedList<T> を組合わせる!
閾値:85KB 未満の容量を初期指定して、 StringBuilder のインスタンス生成。 容量に達するまで StringBuilder に Append。 容量に達したら、ToString() して LinkedList<T>に溜め、StringBuilder は長 さ 0 にリセット。 以上を必要なだけ繰り返し。 LinkedList<T> を ToArray() して string.Concat(string[]) で連結して完成!
13.
何かしらのオブ 何かしらのオブ 85KB 未満
ジェクト ジェクト StringBuilder を生成
14.
15.
その他の解決 64bit OS
に載せ替える .NET4.0 CLR に載せ替える オンメモリにバッファリングしないで、ス トリーミングする
Download now