メモリリークのお話 |
猫まっしぐら_mor | 05/09/26 23:03 |
マビって実行中のメモリ消費量がどんどんあがっていきますよね?
最初80MBくらいで起動して、300~400MB位までいっちゃうとか(上限は知らないけど)。
ウィンドゥモードで最小化すると20~30MBくらいになるけど、またじわじわと上がっていきます。
最小で一瞬5MBくらいになってびっくりすることもありますけど (w
・・で何がいいたいかというと・・・マビって.NET で開発されているのかな?
.NET 環境の開発ってやったことないんだけど、 最小化(Deactive化)されると
VMがGabageCollectして、ごみObjectを開放しているような動きに見える。
まぁ釣りとかで長時間放置したあとは最小化しても50MBとかにしかならないので、
VM管理外でのメモリリークはあるんだろうけど・・・。
VM使う言語は Javaしか使ったことないけど、.NETってこんな感じなのかな?
(本当に.NETかどうかもわからないうちでの話ですが)
これ聞いて「何がうれしい?」とか聞くな・・・単なる技術的な興味です(w
へたれの鳴海 | この掲示板で技術系の内容を理解できる住人は稀じゃないかなぁ~(・x・ 最近、低年齢化激しいし・・・・。 @技術的なアレなら知識王向きじゃないかな? と、スルースキル皆無なへたれが釣られてみる。 05/09/26 23:47 |
アリ理想 | へたれですが.Net開発者やってる観点から… .Netでの開発なら.Net Frameworks環境が必須条件なので .Netは(クライアント自体には)使われてないハズですよ~ メモリリーク自体はGC環境下の変数ならまず起きないはず。 (そのためのGCですから…) GC関係ない部分で起きてるんでしょうな。Win32Api呼び出しとか… VMあってもApi関係はWindows標準関数なためApiで使用した変数は 通常メモリ空間を使用するのでGCでも開放してくれないっぽいです。 他に気になるのがライブラリ読み込み(?)周り。 ライブラリが必要になった瞬間に読み込み始めるために、 起動直後や時間が経ってライブラリがアンロードされた後の処理 (たとえばスキル使用)がライブラリ読み込みから入るため恐ろしく重い。 このせいでダンジョン1部屋目でよく死にかけます…orz #識者の方、間違ってる部分ツッコミオネガイシマス 05/09/26 23:50 |
マグ | MFCのスケルトンのままリリース版をビルドします。 起動してメモリ使用量を確認します。 最小化してメモリ使用量を確認します。 元のサイズに戻してメモリ使用量を確認します。 以上のことをやって見てください。多分メモリリークはないと思うよ。 Win32のスケルトンでも同様にやってみてください。 メモリ使用量の増加=メモリリークではありません。メモリリークしている場合があります、です。際限なく増えたら多分メモリリークですが絶対ではありません。はた迷惑なプログラムなのは確実ですがね。 ここ2,3年Windowsからは離れているので時代遅れな知識かも知れませんが、Windows自体のメモリ管理として(書き換えられていないコードのように)破棄可能なもの、(データのような)破棄不可能なものといった管理をしていて破棄可能なものは必要に応じて破棄するということをやっているそうです。 つまりメモリ使用量で何を見ているのか把握していないときちんとした評価はできないということです。詳しくはリソースキットとパフォーマンスモニタでどうぞ。 05/09/27 00:41 |
猫まっしぐら_mor | >> @技術的なアレなら知識王向きじゃないかな? 知識王かなーとも最初思ったんですが、開発にかかわった人が出てこない限り答えが出るわけないな~と考えたもので(w 年齢層のこと言われると・・・逆に私はおっさんだなぁ (T-T) >> Netでの開発なら.Net Frameworks環境が必須条件なので >> Netは(クライアント自体には)使われてないハズですよ~ 確かに....NETはマビの動作環境として要求されていなかったですね。 インストールパッケージにランタイムの.NET環境を含める・・・ってのはできないのかな?(考え方古い?w) まぁ何にしろ プロセスのDeactive化でごっそりメモリ使用量が減るのがひっかかるのよね。でぶ猫独自でGC環境開発なんて考えにくいし・・・。 >> メモリ使用量の増加=メモリリークではありません。メモリリークしている場合があります、です。 >> 際限なく増えたら多分メモリリークですが絶対ではありません。はた迷惑なプログラムなのは確実ですがね。 確かに最小化することでメモリ量が減っているってことは、減った量のメモリは何かしら管理されていたってことなんですよね。・・・タイトル悪かったな (w >> 詳しくはリソースキットとパフォーマンスモニタでどうぞ。 気力が・・・ orz 05/09/27 01:05 |
二条乃梨子_tar | >>インストールパッケージにランタイムの.NET環境を含める・・・ってのはできないのかな? 出来ないことは無いでしょうがマビには含まれていないようです .NETFr未導入のPCに以前マビインスト済みの状態で.net必須なアプリ起動しようとしても起動しなかったです まぁメモリ使用量増加で重くなるならメモリを増設してやれば良い訳で… 2GB程度乗せておけば問題ないでしょ- 05/09/27 17:58 |
猫まっしぐら_mor | おぉ、なるほど、そうなると .NETの線は完全にはずれですね 05/09/28 01:22 |
ガンダム_mor | 俺機械だからこう言うのもあれなんだけど…韓国製のネトゲは欧米のそれよりもメモリ消費が激しいね。 05/09/27 08:07 |
アカシャ_tar | メモリを動的に使いまくってて、断片化してるだけだったりしてな。 05/09/27 08:45 |
Sarissa | 使用量が増加しつづける=メモリリークだ!と反応する人間があまりにも多いので、Mozillaの開発者が「メモリ管理の学習をしなおせ!」とキレたという話があります。 アカシャさんの言う通り、動的に確保・解放を繰り返した結果断片化してるだけだと思うんですけどね。それが解消されないということはGC言語じゃないってことです。 05/09/27 09:50 |
らいもん_mar | MMOは全般的にメモリリークはあるんじゃないかな~ と、VMのヴィの字も知らんシロートの意見ヽ(´▽`)ノ 最小化せずとも他のウィンドウをアクティブにした時にも、やはりメモリ使用率は下がりますねぇ。。 ということは、やはりマビノギのクライアントでメモリ開放してるのかなぁ? って突っ込んで考えると、少しでも軽く動作させる術を探せるような気がする今日この頃だったりする今日この頃である・・・・マル 05/09/27 10:53 |
でろる | メモリリークって開発に携わってない方でも普通に使う様になってきていますよね。なんででしょね? 現場に於いてもリークの定義って人によって微妙に違ったりするのですが、空いているメモリにキャッシュ を溜め込むのはリークとは普通は言わないと思いますね。 ちなみにマビノギの様な何よりも実行効率が優先される3Dゲーム等では.NETの様な現状では重たい フレームワークを敢えて選択する事は通常無いかと思われます。安全なメモリ管理は重要ではあります がGC等にはそれとトレードオフになるリスクもあり、当然ながら向き不向きもあるというわけです。 05/09/27 11:02 |
二条乃梨子_tar | 以前国産の小規模MMOで.NET環境で開発…てのあったな… 05/09/27 17:59 |
らいもん_mar | あ・失礼(´・ω・`) うっかり使ってしまったw メモリ使用率は上がっていきますね^^; 自分もリークの話で、散々技術者に突っ込まれたことありますw 05/09/27 11:16 |
芽姫 | >> 韓国製のネトゲは欧米のそれよりもメモリ消費が激しいね。 実際は人それぞれだけど、海外(アジア方面)で開発を任せると メモリなんて気にしないで作っちゃう事が多いですよT-T そう、例えば…ローカルで巨大な配列宣言してるとかorz 05/09/27 12:21 |
らいもん_mar | 韓国人はせっかちな人多いですからね 自分も一緒に仕事したことがあるのですが、仕事に対して 「質」 というよりは 「量」 って考え方の方が多数でした 05/09/27 13:29 |
takechan_tar | 専門ではありませんが、単にライブラリの読み込み開放というよりも データキャッシュとしてメモリ領域を使用している気がします。 (MAPデータとか) 私自身は検証していませんが、マビクライアントがどの位メモリーを使用しているのかをタスクマネージャーで確認し、掲載して頂けた方がより詳しい話がでると思いますよ。 05/09/27 12:28 |
takechan_tar | もし、データキャッシュとしての利用とするならば搭載メモリはRIMMが良いと思います。ただし、高速アクセス出来るメモリーは高いよ。^^ 05/09/27 12:37 |
MAS | リークの件、現状どうかはちょっと微妙だと思っています。 有料サービス開始時とかベータサービスの頃はとんでもない状況で、1日放置だとメモリ使用量は1GByte近く行きました。 1GByte近くという表現で上限を書かないのは、その辺りで暴走してしまうためです。 その状況でクライアントを終了するには、私の環境では20分ほどかかりました。 この状況でリークしていないとはさすがに考えられないと思っています。 ただ、最近は300MByte程度で頭打ちになるようですし、暴走することも無いです。 まだクリティカルエフェクトが重くなるのは完治していないようなので完全とはいえませんが、メモリ周りの処理は徐々に改善されていっているみたいですね。 05/09/27 13:35 |
二条乃梨子_tar | クライアント終了時に重いのはHDD内の使用してた仮想メモリを開放するために削除してる時間だと思う。 終了時に仮想メモリに振ってるHDDの駆動音鳴りますし。 05/09/27 18:02 |
takechan_tar | スワップしているのであれば、メカディスク(普通のHDD?)をやめて、DOM(Disk On Modlues)にした方が高速かもしれませんね。 http://www.globalamericaninc.com/other/dom.php しかし、マビのためだけにDOMは高いわな・・・。 05/09/27 18:20 |
猫まっしぐら_mor | う~ん・・いろいろお話聞きたいけどスレッド流れてきたな。 やっぱ .NET ではないとのお話ですね。やっぱ .NET は 重いんか ・・・仕事の情報収集にもなった (w まぁメモリの断片化とかの話もあっていろいろ想像をかき立てさせて貰いました。 ・・・で、やっぱ最小化で使用メモリごっそり減る理由がよくわからないですね・・・データキャッシュ開放って考えた場合、逆にウィンドゥ表示に戻しても初回のラウンドが重いような感じはないし... う~ん謎だ (w 05/09/28 01:13 |
らいもん_mar | たしかにメモリ使用率で不可解な動きはありますよね・・・実際問題として・・・なんでしょうねあれ・・・・ 05/09/28 11:58 |
Sarissa | 最小化時にメモリ使用量が一気に減るのは、Windowsがメモリコンパクションを実行するからだと何処かに書かれてました。マビだけでなく他のアプリケーションでもなりますよ。 05/09/28 14:41 |
件名 | 名前 | 日付 | 閲覧数 | ||
2005/03/23 | |||||
2005/03/04 | |||||
2005/01/17 | |||||
+20 | tana1 | 2005/09/27 | 6241 | ||
+3 | 鳳城神威 | 2005/09/27 | 5946 | ||
+7 | エンテリオン_mar | 2005/09/27 | 5095 | ||
+2 | デーモン_rua | 2005/09/27 | 7046 | ||
+14 | tim69 | 2005/09/26 | 5896 | ||
+23 | 猫まっしぐら_mor | 2005/09/26 | 11437 | ||
+21 | ゼルダ_cic | 2005/09/26 | 7140 | ||
ニートマイダ_cic | 2005/10/03 | 2330 | |||
+2 | 斗霧 | 2005/09/26 | 5171 | ||
+10 | MCU_mor | 2005/09/26 | 7767 | ||
+11 | モルーエ | 2005/09/26 | 6955 | ||
セィム_mor | 2005/09/26 | 3267 | |||
+8 | らいもん_mar | 2005/09/26 | 5367 | ||
+7 | ウィノア_mar | 2005/09/26 | 5777 | ||
+37 | 小泉純一郎改 | 2005/09/26 | 7320 | ||
+22 | 春南風 | 2005/09/26 | 7272 | ||
+17 | フィックス_tar | 2005/09/26 | 6855 |