1 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:44:56 ] 前スレ VB.NET質問スレ(Part30) pc12.2ch.net/test/read.cgi/tech/1242522019/l50 テンプレは>>2 〜
882 名前:デフォルトの名無しさん [2009/11/12(木) 23:22:16 ] Visual Studio 2008 Express Editionでプログラムを作成しています。 開発しているPCではエラーも発生せず動作するのですが あまりメモリを積んでいないPC(512MB)ではSystem.OutOfMemoryExceptionが発生します。 エラーが発生する環境を開発環境で再現するためにApplication Verifierを導入し, Low Resource Simulationにチェックを入れて実行するとSystem.OutOfMemoryExceptionが発生しました。 メモリが足りないことがエラーの原因だと思いますが,FormにPictureBoxを数個置いているだけのプログラムでして それほどメモリを使用しているとも思えません。CloseやDisposeで解放するようにしましたが状況は変わりません。 こうした問題はどうやって解決すべきでしょうか?
883 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:38:10 ] >>882 そんなの知るかよ。 それほどメモリを使用しているとも思えません? 煽り抜きでいかにもダメな奴が言いそうな台詞だね可哀想。
884 名前:882 [2009/11/13(金) 00:07:33 ] メモリの使用状況についてですが以下のような感じです。 Working Set - 20,684KB Peak Working Set 20,800KB 仮想メモリ Private Bytes - 18,912KB Peak Private Bytes - 19,088KB 正直メモリ使用量の定義がよく分からないのでそれっぽい値を書き出しただけなんですが コントロールの無いFormを表示させるだけのプログラムで以下のような感じなので それほどメモリを消費してるとは思えないのです。 Working Set - 13,228KB Peak Working Set 13,228KB 仮想メモリ Private Bytes - 14,052KB Peak Private Bytes - 14,052KB
885 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:50:37 ] メモリ増やせばいいじゃん
886 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 01:05:57 ] 分からないなら分からないって言えよ
887 名前:デフォルトの名無しさん [2009/11/13(金) 04:07:16 ] VB2010ベータ1をインスコして勉強がてら遊んでみた。 最近はマルチコアのCPUも多くなったし、重いループ処理は極力マルチコアで処理させようと考えて 次のようなコードで試してみたんだけど・・・ Private counter As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click counter = 0 System.Threading.Parallel.For(0, 10000, AddressOf proc) Console.WriteLine(counter) End Sub Private Sub proc(ByVal index As Integer) counter += 1 For i As Integer = 0 To 1000000 Next End Sub counterの値が10000になると思ったのに何故か9998とかになっちまうじゃねえか!この野郎! あと、System.Threading.Parallel.ForEachも試してみたが、これも同じ様に列挙が抜け落ちる! 言うまでもなく例外など出ない(笑) 俺がおかしいのか??それともベータだから未完成ってことなのか?
888 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 05:32:11 ] >>887 そもそも += はスレッドセーフじゃなかったと思う
889 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 05:39:45 ] >counter += 1 Interlocked.Increment(counter) VBってvolatileにあたるのってなかったっけ?
890 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 09:37:39 ] スレッドセーフってなんだよ!意味わからない専門用語つかうな!バーカ
891 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 09:38:28 ] >>887 当たり前であって馬鹿はお前だ。 どういう事か理解できないならパラレルとかマルチスレッド絡みには 手を出さない方がいいぜ。
892 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 10:15:42 ] >>890 MSDNのクラスのリファレンスに必ず「スレッドセーフ」があるんだが。 それでいて”意味がわからない専門用語”といってる時点で、あんたがココに来る資格ないよ
893 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 13:19:11 ] 質問しといて分からない単語が出てきたら調べる努力もせずに逆ギレって・・・