2019年6月30日日曜日

【VB.NET】実行時エラー3035 メモリ不足です

VB.NETからDAOで、ACCDB操作を行っているツールの
環境変更対応で『実行時エラー3035 メモリ不足です』にハマった。。

ネットで見つかる対処方法は、一通り試したが駄目。
うまく行くときもあるが、完全ではない。。

もろもろの事情で、調査中断となり
迷宮入りになったので、原因はわからないが
DAOのWorkSpaseをグローバル宣言し、複数のメソッドから
使いまわしていることで、メモリ開放がされず
エラーとなっている気がする。

GCやらSleepを入れて、気持ち成功率が上がった気がするので
これは、処理時間が伸びて、その間に
WorkSpaseの領域が開放されたのかなっと、、

おそらく、宣言をローカルで行えば、メソッド終了時に
メモリ開放されると思うが、影響範囲が大きすぎて、試せてないので
本当のところは迷宮入り。

そもそもDAOなんて、古いもんを使うな。ADOを使え。
つかACCDBなんて使うな。やたらとグローバル変数使うな。
ちゃんとテストでメモリ見ろ。と思った。

■実行環境
・Windows10(64bit)メモリ8G
・Office2016(32bit)

■試したこと
・レジストリの変更からバッファーやらタイムアウト値やらなんらやをいろいろ広げる
・SetOptionでソース内から一時的にバッファーを広げる
・ACCDBの最適化やらなんやら
・Accessのオプションのクライアント設定のタイムアウト値やらなんやら
・仮想メモリを広げる
・CGを入れる
・Sleep入れる
・処理分割し、メソッド掘って、宣言場所を変更(既存処理への影響が大きく途中で断念)

2019年6月29日土曜日

ゲーミングPCを買った

ゲーミングPCを買った。

いんてりじぇんすな俺様は、ゲームなんかしねぇーし
特に使い道はないんだけど。

なんとなくだよ!

いちいち理由なんて気にすんじゃねーよ

おめぇさ。世の中にあるものにすべて理由があるとか
考えてんの??

風が存在する理由をお前は答えられるのか?
この世界で起きることはすべて、ただの現象なんだよ。わかる?

会社で、いちいち理由を聞いてくる上司がいたら
言ってやっていいんだよ

じゃぁ、あなたが存在する理由はなんですか?ってな。

おれは責任とらねぇけどな。
だって、おれ、いまなに言ってっか、自分でもわかってねぇーからな。

話をもとに戻そう、つまるところ
サクサク動くPCが欲しくなったわけだ。

でも、使い道のないおもちゃに何十万も使うほど
おれの財布は潤ってねぇよ。

だから、おれのできる限り安く済ませるよう努力したわけだ。

〇メルカリ
まず初めに、メルカリで中古PCを調べた。
(これは結局買えんかったよ)

見つけたPCのスペックは以下。
-----------------------------------------
CPU     :Intel Core7 2600
メモリ    :8GB
ストレージ:HDD 1T
OS    :Windows10 Pro 64bit
GPU    :GeForce GTX 960
ファンコントローラ、スーパーマルチドライブ
モニタ、マウス、キーボード、無線LANアダプタセット
-----------------------------------------
値段は、5万円のところ、交渉の結果4万7千円で送料無料になった。
マウスもキーボードもPCケースもなんか光まくっていて
いかにもゲーミングって感じだった。

光まくっているのは、おれの趣味ではないが
セットで付いてくるなら、後で売ればいいかと。

単体で同じパーツを中古でそろえても購入したとして
モニタとマウスとキーボードが無駄にいいもので
5万円前後にはなりそうで、お得だったな。

性能も「Intel Corei7 2600」は、第2世代モデルのわりに
Corei5の第7世代と同等の性能があるらしく
十分なレベルだし、購入を依頼した。

でも、出品者の気が変わったのか、発送予定期限を過ぎても
商品が発送されず、連絡も取れなくなったわけよ。

相場を調べて悪条件であることに気づいたんじゃね。

実際のところ、ドライブとかHDDとかOSとかは持ってるし
キーボードやマウスもそこまで高級なゲーミング仕様のものは
必要なかったし、
第2世代のCPUだと、搭載されているチップセットにもよるけど
後でアップグレードしたくなった時に、良くて第3世代までで
それ以上の世代にするとなると、マザーボードを変える必要があるし
元のマザーボードは無駄になるし、売るとしても
古いので、それほど高くも売れなかったかもな。

だから俺的には、買えても買えなくても
どっちでもいいかなーって感じで、スルー。

〇秋葉原のインバース
次に見つけたのが、秋葉原のインバース。
中古ショップで、スペックは以下。
-----------------------------------------
CPU       :Intel Core i5 4590
メモリ     :8GB
ストレージ:SSD 240GB
OS    :Windows10 Home 64bit
GPU           :GeForce Leadtak GTX960
スーパーマルチドライブ
3か月保障付
-----------------------------------------
39,500円のところ、木曜限定セールで10%OFF(35,550円)
第4世代、チップセットによっては
第5世代までアップグレード可能。

これは悩んだけど、これを見つけたときは
先のメルカリのキャンセル手続き中だったので
結局、これも買わず。。

〇中野ジャンクワールド

そしてそして、キャンセルが手続きが完了してから
中野のジャンクワールドにて。
-----------------------------------------
Intel Core i5-6500
メモリ 8GB
HDD 1TB
SSD 128GB
Windows10 Pro 64bit
スーパーマルチドライブ
-----------------------------------------
39800円。もう疲れてたので値段交渉はせず、そのまま購入。

いろいろ見るうちに、新しいものが欲しい思考になってたし
第6世代乗ってるなら安いし、いいかと。

んで、家に持って帰って、中身のパーツと
中古の価格を確認。
-----------------------------------------
CPU       Intel Core i5-6500 ¥14800
M/B       ASUS H110M-A/M.2/C/SI(H110 1151 DDR4 mATX)  ¥4990
クーラー COOLERMASTER LGA1155/LGA1156 CPUクーラー  ¥1400
MEM 1     Samsung M378A5143EB1-CPB(DDR4 PC4-17000 4GB) ¥2490
MEM 2     Samsung M378A5143EB1-CPB(DDR4 PC4-17000 4GB) ¥2490
GPU       ZOTAC GTX750 Ti 2GB 128BIT DDR5(ZT-70601-10M)  ¥6980
DC         Diginnos「Silent King-2 LW-6350H-2」350W ATX電源   ¥2980
ケース    Diginnos  EM041 マイクロATXケース ¥5000
HDD  1TB  ¥1980
SSD  128GB ¥1980
スーパーマルチドライブ ¥2056
Windows10 Pro ¥8999
合計¥56145
-----------------------------------------
結果、差額¥16345くらいお得に買えたのかなっと。

一つずつ買ってると送料もかかるし
既に持っていたOSとドライブとストレージの分を考えても
少しお得だったなっと思う。7世代までのアップグレードができるしな。

悪い点は、やっぱマイクロATXは小さいし
拡張性も低いので、普通のATXがよかったかなっと。。
あと電源が予想以上に少なかった。。

〇今後
今後のカスタマイズは、
とりあえず、今持っているBDドライブを付けるくらいかな。

あとメモリはできれば増やしたいのと、電源も増やして
そのうちグラボやらCPUも変えたいかな。。んーまーいつか。。

〇最後に
今回、PCを買うのにいろいろ調べたけど楽しかった。
結局最後は、自分は新しいもの思考に走ったけど、
全然、古いものでもいいと思う。

古くてもCore i7なら十分性能高いし。古い分、安価だし。
グレードアップする時も新しいものには、変えれないけど
性能は上げれるし。たとえば
Core i7 2600 から Core i7 3770にアップグレードする場合
今だと、¥9480くらいでできるけど

同じくらいのスペックのCore i5 7600Tから
Core i5 7600Kでは、¥26800もかかる。
なかなかPCの世界は深いなと。勉強になった。うむ。