WindowsMeはメモリの上限が640MBと聞いてますが

現在1024MB(4×256MB)のメモリで、

WindowsMeと別のパーティションにWindows2000を使用しています。

WindowsMeを起動するときはメモリ2枚(512MB)を抜いてるのですが、

たまに、抜くのを忘れて使用してますが、特に問題もなく動いてます。

※メモリを640MB以上で使用すると、どのような不具合が起きるのか

同じような環境、または

OSにお詳しい方、適切なアドバイス宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

前回のレスの後、MSDNライブラリで調べたら該当する文書がありましたので


前回の補足とさせていただきます。
(内容はyanronさんとかぶっておりますが、Microsoftの公式文書ということで、
yanronさんご勘弁くださいませm(__)m。)

参考までに御覧ください。

Microsoft サポート技術情報 文書番号:JP253912
[WinMe]大容量のRAMを搭載時、メモリ不足のエラーが表示される

回避の設定方法はありますが、OS自体の仕様に関する記述(認識する物理メモリの最大値)はありませんでした。

回避策を利用すれば、毎回メモリの抜き差しはしなくてよくなります。
過度の抜き差しの繰返しで、メモリソケット&メモリを破壊した人を知っています・・・(;^_^A
それでは。
    • good
    • 1
この回答へのお礼

メモリソケット&メモリを破壊の件、
電源に負担がかかる件、
補足説明、参考にさせて頂きました。
ありがとうございました。

お礼日時:2001/08/29 17:21

Win9×系(Me含む)のOSは


768MBまでの物理メモリーしか認識できない様です

System.iniの内容を修正することでどうにかなります
詳細は参考URLで検索して下さい
キーワードは 「トラブル_メモリー」 で出てきます


私は98SEですが
1G積んで起動しないと言うトラブルに陥りました(T_T)

参考URL:http://homepage2.nifty.com/winfaq/index.html
    • good
    • 0
この回答へのお礼

yanronさん、始めまして。
System.ini を書きかえて使うことにしました。
大変参考になりました。
ありがとうございます。

お礼日時:2001/08/29 17:10

はじめまして。



OSの認識できる最大物理メモリ容量を越えた物理メモリを搭載している場合、必ずではありませんが、”メモリ不足エラー”が発生してアプリケーションが起動しないことがあります。

以前一度調べたのですが、Windowsのキャッシュドライバに関係しているようです。Windowsが起動するときにPCに実装されているメモリから最大キャッシュサイズを決定するような記述を記憶しています。(あまり詳しく覚えていないのですが・・・)

WindowsMeに関しては分かりませんが、Windows98が認識できるのは944MBです。
WindowsNTやW2Kでは、1GB以上利用できます。
(1プロセスに割り当てられるメモリは4GBが最大と聞いた事があります。)

記述があいまいで申し訳ありません。(^^ゞ
    • good
    • 0
この回答へのお礼

nanazoさん、始めまして。

確かにアプリケーションの起動が遅かった気がします。

適切なアドバイス参考にさせて頂きます。

有難うございました。

お礼日時:2001/08/28 21:13

640MB以上で動かしてらっしゃる方も沢山いるので大丈夫だと思いますよ。



問題はチップセットのサポートしてる限界容量なのでは無いでしょうか。
もしくはメモリモジュールの本数が増えると電源に負担がかかるのでその辺とか。
    • good
    • 0
この回答へのお礼

BENIGENさん、始めまして。

640MB以上で動かして行こうと思います。

適切なアドバイス参考にさせて頂きます。

有難うございました。

お礼日時:2001/08/28 21:33

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメモリに余裕があるのにヒープが確保できないです。

趣味のプログラムなので切実な問題ではないのですが、
1秒間隔に処理を行うプロセスを-Xmx64Mの指定で6つ起動しようとするのですが、
6つ目でヒープが確保できなくて処理が走りません。
スレッドは1プロセスあたり15くらいです。
OSはWindowsXPでCPUはPentium Dual-core E2140で
メモリは2GBつんでいるのですが、
タスクマネージャでみると1GB強しかつかってません。
できれば6つ同時に走らせたいのですが、方法はありますでしょうか?

Aベストアンサー

ヒープエリアはたしか全プロセスで共通に使われるはずです。
-Xmx64M を -Xmx128M 等に変更して動かしてみて下さい。

Qメモリ拡張 最大256MBを+128MB足す

Prius DECK550S5SWを使っています。メーカー発表のスペックだとメモリが最大256MBまでしか使えないとなっていますが、このPCのスペックだと512MBまで使えそうな気がするのですが、どうでしょうか?今は128MB×2で256MBです。で、256MBのメモリを買ったのですが128MBを1枚抜いて256MB+128MBにしたいのです。いずれは512MBにしXPにアップグレードしようと思っています。色々HPを見て出来そうなんですが不安なので質問しました。

Aベストアンサー

こればっかりは博打ですね。1さんのおっしゃるとおり、可能性は十分あります。
ただし、Buffalo製のメモリーで確認したと言うことですので、ここの製品を購入する必要があります。

とりあえずは128プラス256でと言うことですが、チップセットなどの相性で動作が不安定になることがよくあります。できるなら同じ製品で256プラス256にしてしまったほうがいいと思います。

QC/C++言語のメモリについて

C言語でメモリを2種類?に分けると、スタックとヒープがあります。
ヒープは mallocなどで確保し、freeで解放しますがスタックは解放する必要がありません。
そのスタックは通常、何バイトまで可能なのでしょうか?

あと関数外のファイルの先頭に int[1000000];とした場合、このメモリはmallocで確保していませんが、
どこに作られるのでしょうか?

私のパソコンはメモリが2GBでWindows2000ですが、CやC++で最大、何バイトまでメモリが使えますか?
また、一番多くメモリを確保できるなら、OSはなんでも構いません。

解釈等も間違っていたらご指摘していただきたいです。

Aベストアンサー

マイコン向けのプログラムを書いてます、Interestと申します。

> C言語でメモリを2種類?に分けると、スタックとヒープがあります。

間違いではありませんが、ちょっと足りません。プログラムで使用するメモリはもう少し細かく見ると、次のようになっています。

(P) 実行される命令(ProgramとかCodeと呼ばれます)
(C) 定数など変更されないデータ
(D) 初期化されるデータ
(B) 初期化されないデータ
(H) プログラムから動的に割り当てられるメモリプール(これがヒープです)
(S) ローカル変数、関数の引数、呼び出し元関数へのリンクに使用する比較的短命なものに使用するメモリプール(これがスタックです)

> そのスタックは通常、何バイトまで可能なのでしょうか?

開発環境によって初期値が決まっているようで、どれだけ割り当てるか変更できるようです。OSには依存しません。Visual C++ 6.0の場合、スタックサイズの初期値は1MBだそうです。
参考 http://okwave.jp/qa2645032.html

> あと関数外のファイルの先頭に int[1000000];とした場合、
> このメモリはmallocで確保していませんが、どこに作られる
> のでしょうか?

最初に説明した内容に照らすと、一般に外部変数は0で初期化されますから、(D) 初期化されるデータ の領域に確保されることがわかります。

> 私のパソコンはメモリが2GBでWindows2000ですが

WindowsなどのOSは物理メモリが足りなければハードディスク上の仮想メモリも使用しますので、単純に何バイトまで使えます、とはお答えできません。

> 一番多くメモリを確保できるなら、OSはなんでも構いません。

どのようなプログラムを組もうとしているのですか?

マイコン向けのプログラムを書いてます、Interestと申します。

> C言語でメモリを2種類?に分けると、スタックとヒープがあります。

間違いではありませんが、ちょっと足りません。プログラムで使用するメモリはもう少し細かく見ると、次のようになっています。

(P) 実行される命令(ProgramとかCodeと呼ばれます)
(C) 定数など変更されないデータ
(D) 初期化されるデータ
(B) 初期化されないデータ
(H) プログラムから動的に割り当てられるメモリプール(これがヒープです)
(S) ローカル変数、関...続きを読む

Qメモリ増設256MB→それ以上は?

元はWin98SEのデスクトップPCにWin2000のOSを入れました。
メモリは増設して256MBにしています。
Win98では256MBが増設の上限だと聞きます。
OSをWin2000にした事によって更なる上のメモリを積むことが出来るのでしょうか?
例えば256×2で512MBとか。ちなみにCPUはAMD製の550MHz。
どうも特定のサイト観覧やソフトを起動すると重いorフリーズするので、メモリ不足かと思いまして。
いかがなものでしょう?

Aベストアンサー

OSが何であってもチップセットによる上限を上回ることはできません。
ですが、先の方も書いているとおりパソコンメーカーが示している上限はチップセットの上限より低いことが多く、それ以上のメモリを搭載できることもあります。(ただし、チップセットの上限を上回ることはできません。)

>Win98では256MBが増設の上限だと聞きます。

これはある意味正しいです。
なぜなら、9X系のOSは大容量のメモリを想定していないため、512MB以上のメモリを積むと不具合が出ることがあります。
また、大容量のメモリを想定していないことから大容量のメモリを上手く扱うことができませんので増設の効果が薄くなります。
256MBが無難なところまででは上限と言えるでしょう。
これについても、先の方が書いていますが128MBまでにとどめておくのが効果を考えると9X系では妥当な線でしょう。

それで、結局のところ私ならどうするかというとそのパソコンにメモリ増設はしません。
私なら迷わず買い換えるでしょう。
K6-2が搭載されているパソコンははっきり言って遅いです。(CPUだけでなくチップセットも)
本体だけなら新品が3万円台から買えますので迷わず買い換えたほうがよいです。

OSが何であってもチップセットによる上限を上回ることはできません。
ですが、先の方も書いているとおりパソコンメーカーが示している上限はチップセットの上限より低いことが多く、それ以上のメモリを搭載できることもあります。(ただし、チップセットの上限を上回ることはできません。)

>Win98では256MBが増設の上限だと聞きます。

これはある意味正しいです。
なぜなら、9X系のOSは大容量のメモリを想定していないため、512MB以上のメモリを積むと不具合が出ることがあります。
また、大容量のメモ...続きを読む

Qヒープ領域の限界値設定

大量にメモリを消費するアプリケーションを下記環境で動作させようとしています。
WindowsXP SP2, 1GB RAM
タスクマネージャの物理メモリの利用可能 674,500K位
この状態でヒープ領域をレジストリで変更しようと思っているのですが
限界値が不明です。
徐々に3071⇒4096⇒8192と上げていっているのですが、限界値を超してしまうとOS自体が起動できなくなる恐れがあるので怖いです。
アドバイスください。

Aベストアンサー

回答No.1に挙げた「デスクトップ ヒープ」で用いている「ヒープ」という用語は、グラフィックサブシステムで使用するためにWindowsのグラフィックサブシステムがあらかじめ確保して自分自身のために使用するメモリ領域のことを指しています。

また「mallocが使用するヒープ領域」という場合の「ヒープ」という用語は、ライブラリ関数mallocがWindows APIを使用して確保するメモリ領域のことを指しています。

ですので、「デスクトップ ヒープ」と「mallocが使用するヒープ領域」は違うものです。


「mallocが使用するヒープ領域」がどこから来るのかは、コンパイルに使用した言語環境のライブラリ関数mallocの動作内容に依存します。

仮にMicrosoft Visual C++(VC++ Version 6.0以降)を使用してコンパイルし、ライブラリ関数は標準添付のものを使用したとすると、mallocはWindows APIのHeapAllocで取得したメモリ領域をライブラリ内で細分(サブアロケート)して返します。またこの場合、HeapAllocで取得できるメモリ領域の量に固定の上限はなく、PCのメモリ実装量、Windowsのスワップ領域の大きさ、それとアプリケーションプロセスのメモリマップが許す限り、いくらでもHeapAllocはメモリを割り当てて返すことができます。

ですので上記の場合、mallocも同様に「PCのメモリ実装量、Windowsのスワップ領域の大きさ、それとアプリケーションプロセスのメモリマップが許す限りいくらでも」メモリを割り当てて返すことができます。

なお、上記動作はライブラリのソースコードを見て確認したものですので、使用しているコンパイラがVC++ではない、あるいはVC++でもVersion 6.0より古い場合、mallocが「いくらでもメモリを割り当てて返すことができる」かどうかは分かりません。(しかし、返すメモリ領域が「デスクトップ ヒープ」と違うものであることだけは変わりません。)

回答No.1に挙げた「デスクトップ ヒープ」で用いている「ヒープ」という用語は、グラフィックサブシステムで使用するためにWindowsのグラフィックサブシステムがあらかじめ確保して自分自身のために使用するメモリ領域のことを指しています。

また「mallocが使用するヒープ領域」という場合の「ヒープ」という用語は、ライブラリ関数mallocがWindows APIを使用して確保するメモリ領域のことを指しています。

ですので、「デスクトップ ヒープ」と「mallocが使用するヒープ領域」は違うものです。


「mal...続きを読む

Qセレロン950MHz、メモリ256MBのPCでネットをしたいという人が

セレロン950MHz、メモリ256MBのPCでネットをしたいという人がいます。
やることはHPを見ることだけだそうです。

1)Windows2000を入れて、sandboxie上でoperaかseamonkeyでネットサーフィンをして
セキュリティソフトはFWだけ、ウイルスチェックはオンラインのものを使い、
感染していたらsandboxie上なので砂箱を削除。

2)Puppy Linuxでデフォルトのseamonkeyを使う。

2はWindowsソフトは使えないので
1が返答が最善でしょうか?

Aベストアンサー

:>回答 No.4 You Tubeなどは閲覧できません。
正確に表現すると回答No.5の添付画像に表示されているように、
[Internet Explorer 6]では、「お使いのブラウザは、YouTube でのサポートが終了しているため、YouTube の機能の一部がご利用いただけないことがあります。」と表示されます。
 なお、Windows2000にインストールして利用できる最新のブラウザは[Opera]および[FireFox]です。

Qメモリをたくさん使うテストプログラム

Linuxで、メモリをたくさん使うようなテストプログラムを作りたいのです。
メモリといっても、プログラムコードの入っているテキスト領域、データの入っているデータ領域、ヒープ領域などがあると思いますが、
これらのいずれかのみをたくさん使うようなプログラムを作りたいのです。
例えば、サイズの大きなプログラムであれば、テキスト領域が大きくなったり、
大容量の文字列を扱ったりすると、データ領域が大きくなったりするんでしょうか?
関数とメモリ使用量の関係があまり分かっていません。
どうか教えてください。

Aベストアンサー

#1です。
>テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか?
はい、その通りです。
>mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?
いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。

コーディングでは、以下のようになります。
-----------------
#include ....ヘッダファイル
char data1[256];  ・・・・データ領域
main()
{
data data2[256];  ・・・・スタック領域
if (・・・){    ・・・・テキスト領域
・・・
}
malloc(3000)    ・・・ヒープ領域へ確保
}

main等の関数の外側で確保した領域は、データ領域に取られます。
main等の関数の内側で確保した領域は、スタック領域に取られます。(static指定を除く)
実際に命令(if文など)は、テキスト領域にとられます。
mallocで確保したメモリはヒープ領域に取られます。
(但し、テキスト領域の言葉は正しいかどうか不明です。参考URLを参照下さい)
ところで、どうして、メモリをたくさん使うようなテストプログラムを作りたいのですか、よかったら教えて下さい。そのほうに興味があります。

参考URL:http://www1.cts.ne.jp/~clab/hsample/Point/Point19.html

#1です。
>テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか?
はい、その通りです。
>mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?
いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。

コーディングでは、以下のようになります。
-----------------
#include ....ヘッダファイル
char data1[256];  ・・・・データ領域
main()
{
data...続きを読む

QWinMEでメモリー512MB以上を使用可能にする具体的な方法

WinMEでメモリー512MB以上を使用可能にする具体的な方法を御教え願い度く。

Aベストアンサー

1GBまでという条件付です(Windows 9x/Meは、1GBを超えるRAMを処理するようには設計されていない)が・・・、

"system.ini"ファイルを開いて、"[386Enh]"セクションを探し、

MaxPhysPage=nnnnn  (←1GBの場合、40000)

を書き加えてください。

『Microsoft サポートオンライン:W95:MaxPhysPage を使って利用可能 RAM 容量を指定する』
http://support.microsoft.com/kb/181862/ja/

参考URL:http://support.microsoft.com/kb/181862/ja/

Qjava string 配列の使用メモリ

String[][][] arg = = new String[x][x][x];
でxが638の時にjava.lang.OutOfMemoryErrorになってしまいます。
VM起動時のヒープ最大値は1GBまで試しましたがダメでした。

このときargオブジェクトはどれだけのメモリを必要とするのでしょうか?

Aベストアンサー

このnewで作られるオブジェクトは、配列オブジェクトだけです。Stringオブジェクト自体は作られません。
なので、オブジェクトのサイズとしては、配列オブジェクトのサイズだけを考えればよいことになります。
(ちなみに、メソッド本体はクラスに1つあるだけで、作成したオブジェクトの数だけできるわけではないですから、オブジェクトを作ると、新たにメソッドの分のメモリが必要になるわけではありません)

さて、argオブジェクトのサイズですが、1つのオブジェクトへの参照を保持するのにまず何バイトが必要か考える必要があります。
32bitのJavaだったら、たぶん32bit=4バイトでしょう。
この配列の要素数はx^3個ですので、1つあたりが4バイトとなると、x^3 * 4 バイトのメモリが最低限必要ということになります。
もちろん、他にも多少メモリが必要でしょうが、xが大きいときのことを考えるわけですし、無視しても問題ないでしょう。

x=638の場合を計算してみると、638^3 * 4 = 1038776288 となります。
これは約990MB で、だいたい1GBです。
ヒープの最大値を1GBで試したということですので、計算と合っているのではないでしょうか。

このnewで作られるオブジェクトは、配列オブジェクトだけです。Stringオブジェクト自体は作られません。
なので、オブジェクトのサイズとしては、配列オブジェクトのサイズだけを考えればよいことになります。
(ちなみに、メソッド本体はクラスに1つあるだけで、作成したオブジェクトの数だけできるわけではないですから、オブジェクトを作ると、新たにメソッドの分のメモリが必要になるわけではありません)

さて、argオブジェクトのサイズですが、1つのオブジェクトへの参照を保持するのにまず何バイト...続きを読む

Qメモリの設定について(512にした時の仮想メモリ設定って?)

WIN2000のバイオノート(ペン3 600M)を
使用していてメモリを512に最近しました。
タスクマネジャーで見ると、192の時は130~140の使用量、256の時は150~160程度??
512にして200程度。
仮想メモリは大きくするとパフォーマンスが低下すると
はききますが、過去ログを見てると低すぎてもいけない
様ですね。自分のPCでの状態確認と、設定について
教えてください。ファイルシステムをNTFSにしたら
ディスククリーンアップをかけるだけでも5分くらい
かかってしまう様になったのですが、タスクマネジャで
はメモリ使用量200台前半の使用量となっていまし
た。もっとメモリ使え~!って思ってしまうのですが、
そういうものではない??
根本的にメモリ(と他の連動)が分かっていないようで
す。済みませんが宜しくおねがいします。

Aベストアンサー

 物理メモリと仮想メモリの関係については、適切な回答が出ているので、そちらに任せるとして、私は仮想メモリの設定方法について説明します。

 設定値については、まずタスクマネージャを起動させ、「コミットチャージ」を見てください。

 この最大値が、PCを起動させてからこれまで使用された仮想メモリの量をあらわします。起動させた直後は参考にならないので、普段の使い方をした後に、この値を見れば、それが仮想メモリを設定する際、最適に近い値ということになります。

 この値に応じて設定する場合は、仮想メモリのサイズを初期値と最大値を同じにすることです。そうすると、仮想メモリのサイズが固定化され、断片化をを防ぐことになります。しかし固定化する前に、デフラグをして連続領域を確保してください。


人気Q&Aランキング

おすすめ情報