• ベストアンサー

配列数とメモリの使用率

お世話になります。 VBAで作成しております。 VBAで固定配列、Array(20000,256)を使用しています。 この配列を使用している時には、この配列だけで 具体的にメモリをどれくらい使用しているのでしょうか? もし、配列の中にどれくらい値が入っているか等、 条件が必要でしたら、その条件を指定した上で メモリの使用量を教えて頂ければと思います。 タスクマネージャなどで、自分で調べろ・物によるなどの 回答は結構ですので宜しくお願いします。 以上宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

型定義がString、要素開始添字が1とした場合、 20000×256×10+文字数 バイト だと思います。 それぞれの型のバイト数は下記ページで確認できます。 http://www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html#datapatern

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

「1要素のメモリサイズ」 × 「要素数」 文字列なら、上記+全文字数(アライメント等も含む)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メモリの使用率

    OS:windows2000で タスクマネージャを起動いたしますと メモリ使用量:100548 KB/746890 KB メモリ使用量:変動値 KB/ 固定値 KB と表示されています (1) この値は現在のメモリの使用率なのでしょうか? (2) 例えば 256MB のメモリを搭載している場合の   メモリの使用量は どの位になるのでしょうか? 以上、よろしくお願い申し上げます

  • 連想配列からの値の取り出し

    お世話様です。 タイトルにもありますが連想配列を作成した後(以下に記述例)に その配列からキーを指定して値を取得したいと思っております。 array_keys関数だと値を指定してキーを取得するみたいで うまくいきませんでした。 何かよい方法ありませんでしょうか? //配列に格納 while (条件) {   $aParaOra += array((キー) => (値)); }

    • ベストアンサー
    • PHP
  • メモリ使用量について

    Windowsにてメモリ使用量を計測しています。 タスクマネージャのパフォーマンスタブにあるコミットチャージの合計値と プロセスタブに示されるメモリ使用量を合計した値が 若干ずれているのですが、その差が不明です。 その理由を教えてください。

  • メモリ使用量の測定(Win7)

    お世話になっております。 アプリケーション毎のメモリ使用量を知りたいのですが、 Win7のリソースモニターの値の意味について理解しきれず質問致します。 使用しているOSは Windows7(x64) で、4GBのメモリを搭載しています。 質問内容: Win7で「メモリ使用量は?」と問われたらどれを答えればいいのか? 「○○のアプリがメモリを食い過ぎている」的な話は、 日常的にPCを触れているとよく聞く話ではあります。 そして、どのアプリケーションが、どれだけのメモリを使用しているのかは Windowsならばタスクマネージャー>「パフォーマンス」タブ→リソースモニタ で、見ることが出来ます。 ですが、このリソースモニターに表示されるメモリの値と思われるものには、 コミット、ワーキングセット、共有可能、プライベート、と4っの項目があります。 「プロセスが今使っているメモリ量」は、どれを見れば良いのでしょうか? http://technet.microsoft.com/ja-jp/windows/ff467974 このような資料を見つけ、それぞれの言葉の意味を読むに、 ワーキングセットが、実際の使用量ではない、と推測してはいますが、 コミットの値を信用すればいいのか、 プライベートを見るべきか、正確な理解が出来ずにいます。 XPの時にはこんなに複数の項目はなく、 タスクマネージャーの「メモリ使用量」という項目だけしかありませんでしたが、 Win7のタスクマネージャーに表示される 「プライベートワーキングセット」というのは別物のようですし・・・ どうかご教示お願いします。

  • メモリの使用率の異常

    私のパソコンでタスクマネージャーというものがあるのですが以前から何か作業をする時にはこまめにチェックしています。しかし最近異変に気付きどうしてそうなっているのかわからないので質問させていただきます。普通メモリ使用量というのは何も作業をしていない時個々のプログラムは2~3桁という場合が多いと思うのですが私のPCの場合殆どタスクマネージャーのプロセスに表示されているイメージ名のメモリの使用量が4000~6000のばかりであり異常ではないかと感じております。しかし普段PCを使用する分にはレスポンスの問題などはないのですが、友達に相談しましたところこれはおかしいと指摘されました。しかし全くその原因がわかりません。このまま放っておくと無駄に負荷がかかっているのではないかととても心配しています。

  • ファイルクローズとメモリ使用率について

    100Mを超えるファイルを扱っています。 中のデータは突合せ処理に使用しており、何度もファイルの頭から最後まで読み込みます。 サイズがサイズなので、指定バイト数分取り出し、読み終わったら次の指定バイト数分取り出すといったことをやっております。 この処理を繰り返しますと、メモリの使用量がどんどん増大してしまいます。 ファイルの最後まで読み終わった後、一旦ファイルクローズして、読み直しているのですが、メモリが開放された気配はありません。 どのようにすれば、メモリ使用量を増やさずに処理することができますか? ご教授お願いします。 ファイルのオープン/クローズには、 fopen_s() fclose() ファイルの中身を取得する際には fread() を使用しております。 メモリの使用量はタスクマネージャで確認しています。

  • メモリ使用率の下げ方

    最近パソコンが重いのでタスクマネージャーでメモリ使用率を調べると、firefoxがダントツで高いのですが、firefoxのメモリ使用がパソコンが重くなる原因と考えてよいのでしょうか?またその場合どのような方法でメモリ使用率を下げることができるのでしょうか?

  • Vista メモリ使用量の表示について

    Windows Vista Home Premiumで,タスクマネージャにて表示されるメモリ使用量について教えてください. ※SuperFetchはONにしています タスクマネージャの,下記4つの値について質問させていただきます. (1)「メモリ」のグラフで表示される「物理メモリの使用量」 (2)物理メモリ(MB) 欄の「合計」 (3)物理メモリ(MB) 欄の「キャッシュ済み」 (4)物理メモリ(MB) 欄の「空きメモリ」 ■質問1 (4)がほぼゼロに近い値であるのに対し (1)のグラフでは,未使用の領域として余裕があります. これらは矛盾しているように思いますが,なぜなのでしょうか? ■質問2 SuperFetchによって物理メモリの空いている領域はキャッシュとして使われるかと思いますが, (1)のグラフで「使用されている部分」には,(3)は含まれるのでしょうか? ■質問3 (2)(3)(4)の関係を式で表すと,下記のようになるかと考えていますがあっていますでしょうか. (2)=(OS使用メモリ)+(各アプリ使用メモリの合計)+(3)+(4)

  • 配列をEraseしてもメモリが開放されていない?

    すみません。一度質問を載せた後で、補足で絵を載せようとしたのですができなかったので 再投稿させていただきます。(元の質問はけしました。) -------------------------------------- こんにちは、今作成しているエクセルのVBAで配列を膨大に食ってしまい、メモリ不足に落ちいるという現象に悩まされています。 そのため、なるべくいらなくなった配列はEraseステートメントを使って解放しようとしてるのですが、 これが上手くいっている気がしません。 ためしにフォームと、ラベルを1つずつ用意し、下記のような配列をどこまで作れるか計算するプログラムを組んでみました。 1回目、ans(i) に"a"というaを1個のみ格納した場合で計算すると、配列は2970万個できます。 2回目、ans(i) に"aaa~a"というaを64個格納した場合で計算すると、配列は770万個できます。 まぁ、ここまでは当然の結果だと思います。 可変長のString型変数の場合は、割り当てられるメモリサイズが固定ではないらしいので (前回の質問で教えてもらいました) しかし3回目、ここでもう一回、1回目と同じ、"a"を一個のみ格納した場合で計算してみます。 私の予想では1回目と同じ2970万個程度の配列が作れると思っていました。 なぜなら、Eraseステートメントでメモリを解放していたし、 タスクマネージャーのPF使用量(おそらくメモリの値)を見ても2回目を実行した後の値は 1回目前と同じ値に戻っているからです。 しかし、実際試してみると、 2回目と同じ770万個の配列しかつくれませんでした。 つまり、Eraseステートメントを使用しても配列の上限値は元の状態に戻らなかったのです。 どうすれば、配列を再び2970万個作れる初期の状態に戻せるのでしょうか? 現時点ではエクセルを起動しなおせば、元に戻りますが、それでは困ります (プログラムの途中で配列の数を減らしたり、コピーしたりを行っている為、 どうしてもプログラム中でメモリの解放を行いたいからです) また、添付した絵は、実行した時のタスクマネージャーの様子です。 参考になれば幸いです どうか、みなさんお知恵をお貸ししてください --------------------------------------------------- '実行するときは、フォームとラベルを1つずつ用意して実行してください Public Sub 配列上限取得計算() On Error GoTo ErrEnd Dim i As Long Const kankaku As Long = 100000 Dim ans() As String ReDim ans(1 To kankaku) As String ans(1) = 1 i = 2 UserForm1.Show vbModeless Do If i Mod kankaku = 0 Then DoEvents UserForm1.Label1 = i ReDim Preserve ans(1 To i + kankaku) As String End If '最初にaを1個のみ格納した場合は、2970万個まで配列が作れるが、次にaを64個格納した場合は770万個まで作れた。 'しかし、その直後にまた、aを1個のみ格納した場合で実行してみると、770万個しか作れない 'つまり、Eraseステートメントを使っているにも関わらず、同じ条件のプログラムでも配列の上限が下がってしまう。 'この現象をなんとか回避したい。元の状態にリセットするにはエクセルを起動しなおさないと直らない。 '1回目と3回目に実行するコード、2回目はコメントアウトしてください ans(i) = "a" '2回目に実行したコード、2回目はコメントアウトを解除してください。 ' ans(i) = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" i = i + 1 Loop Erase ans Unload UserForm1 Exit Sub ErrEnd: Erase ans MsgBox "これ以上の配列を設定できません。" & vbCrLf & "上限は" & i & "です。" & vbCrLf & Err.Description Unload UserForm1 End Sub

  • メモリ使用量について

    パソコンのメモリ使用量が今どれくらいなのか知りたいのですが、 タスクマネージャーの物理メモリやらシステムキャッシュとか??なのでメモリについて詳しい方具体的(タスクマネージャー全般の数字ついてや今パソコンがどういう状況にあるかなど)に教えていただけないでしょうか? m(__)mよろしくお願いいたします。 ■参考 合計 ハンドル   8600 スレッド   433 プロセス    38 物理メモリ 合計        1562672 利用可能       1147700 システムキャッシュ  561860 コミットチャージ 合計   357900 制限値  2969244 最大値  363132 カーネルメモリ 合計    83744 ページ   55624 非ページ  28252 (イラストレーターとIEを起動させている状態です)