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

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

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

Re[3]: VB.Net(VS2010) メモリ ヒープサイズ指定方法に


(過去ログ 119 を表示中)

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

■69711 / inTopicNo.1)  VB.Net(VS2010) メモリ ヒープサイズ指定方法に
  
□投稿者/ ふるーてぃお (1回)-(2014/01/22(Wed) 22:16:26)

分類:[VB.NET/VB2005 以降] 

環境
VS2010 VB.NET3.5 WindowsServer2008 64bit

 現在VB.Netコンソールアプリケーションを開発しています
 処理内容はファイルを読み込み、1文字ずつ特定の文字コードが
 ないかチェックし、特定の文字がある場合は前後に
 0e 0fの文字コードを挿入しています。
 (EBCDIC、2バイト文字のシフトイン シフトアウト処理)
 
 サーバー上で実行していますが、
 問題は1GBを超えるファイルを読み込むと、OutOfMemoryが出てしまいます。
 サーバー上のメモリ自体はまだまだ空きがありますので
 アプリケーション上で使えるメモリのサイズを上げたいのですが、
 VB.Netでメモリサイズを指定することはできますか。

 Javaでいう所の以下のようなイメージです。
 java -Xmx:64m -Xms:64m myApp


 調査に当たり、以下のサイトを見ましたが、
 解決に至っていません。
 http://social.msdn.microsoft.com/Forums/vstudio/ja-JP/7f4e9ebc-bfc5-4d3c-a2d2-5e17c390ae00/c?forum=csharpgeneralja
 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10100591780
 http://i.loveruby.net/ja/rhg/book/gc.html
 
 ご教授願いたく。
引用返信 編集キー/
■69712 / inTopicNo.2)  Re[1]: VB.Net(VS2010) メモリ ヒープサイズ指定方法に
□投稿者/ Azulean (263回)-(2014/01/22(Wed) 22:25:12)
Visual Studio 2010 のプロジェクトテンプレートでは、デフォルトで x86 指定でビルド(コンパイル)されるように設定されています。
この場合、32bit のメモリ空間になりますので、せいぜい 1GB ぐらいが限界です。
(4GB のメモリ空間の内、ユーザー領域が 2GB、その中で DLL が読み込まれるなど使われている、断片化しているので連続して確保できる領域は 1GB 前後で頭打ちになる)

安直に対応するのであれば、プロジェクトのプロパティのコンパイルタブのコンパイル詳細オプションあたりから x86 から x64 に変更してください。
そうすれば、64bit のメモリ空間になるので、少しは緩和するはずです。

' 限界がないわけではない。配列の長さは int 型になることを考えると、2GB を超えられないはず。配列を分けるなどの工夫が必要になるはず。
引用返信 編集キー/
■69733 / inTopicNo.3)  Re[2]: VB.Net(VS2010) メモリ ヒープサイズ指定方法に
□投稿者/ jiji (8回)-(2014/01/25(Sat) 10:42:44)
巨大ファイルを扱う場合は、メモリ マップト ファイル(memory-mapped file)が便利です

MSDNの説明が解りやすいとおもいます。
メモリ マップト ファイル
http://msdn.microsoft.com/ja-jp/library/dd997372(v=vs.100).aspx

.NET Framework 3.5 以前ならマネージコードは使えないので、直接APIを叩く必要が有りますが基本は同じです。
引用返信 編集キー/
■69737 / inTopicNo.4)  Re[3]: VB.Net(VS2010) メモリ ヒープサイズ指定方法に
□投稿者/ Hongliang (157回)-(2014/01/25(Sat) 17:52:27)
> 処理内容はファイルを読み込み、1文字ずつ特定の文字コードが
> ないかチェックし、特定の文字がある場合は前後に
> 0e 0fの文字コードを挿入しています。

最終的にファイルなりに出力すればいいのであれば、
ファイル全体をメモリに読み込んでからチェック・挿入するをやめて、
何十バイトずつとか一行ずつとかメモリに読み込んではチェック・挿入・出力するというのを繰り返せば
必要なメモリサイズはぐっと減りますが……。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -