C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 配列がメモリーに残ってしまう。


(過去ログ 157 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■90831 / inTopicNo.1)  配列がメモリーに残ってしまう。
  
□投稿者/ ahou (1回)-(2019/04/27(Sat) 15:24:58)

分類:[.NET 全般] 


VB.NETでバックグラウンドプロセスを使ったプログラムを書いているのですが、


Dim s As Integer = 0
Parallel.For(1, 1001,
Sub(i As Integer)

Dim Array(1000, 300, 300) As Single


End Sub)

のように大きな配列を生成した時、
タスクマネージャー上で確認して、
数GB程度のメモリを使用しています。
しかし、その後、
バックグランドプロセスから抜けたにも拘わらず、
このメモリは解放されません。

毎回のループで
Array = Nothing
を入れてあげるとメモリは解放されます。

Forループの中で宣言された変数なら
Forループを抜けた時点で解放されると思うのですが
なぜ解放されないのでしょうか?


引用返信 編集キー/
■90832 / inTopicNo.2)  Re[1]: 配列がメモリーに残ってしまう。
□投稿者/ キングダム (19回)-(2019/04/28(Sun) 20:58:28)
No90831 (ahou さん) に返信

クロージャオブジェクトが作られて
そのメソッドの中のローカル変数なので
処理が終わったらGC対象になると思いました

たまたまなんじゃないですか
Nothing入れたらたまたまGCが行われたみたいな

メモリが解放されないってことは
処理を動かし続けてメモリオーバーフローが投げられるところまで確認しました?
引用返信 編集キー/
■90850 / inTopicNo.3)  Re[2]: 配列がメモリーに残ってしまう。
□投稿者/ Jitta (439回)-(2019/05/07(Tue) 11:47:10)
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/large-object-heap
おそらくこれ
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -