ソラマメ ブログ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 4人
オーナーへメッセージ
QRコード
QRCODE

気ままな一言

ご質問等、ページへのリンクはご自由に。気軽にコメントでもどうそ~
詳しいことは角川SIMのサポートセンターまでいらっしゃいませっ

世間知らずなので逆にいろいろ教えてください♪

2008年03月09日

スクリプトのメモリチェック

スクリプトには今のところ16KBとというメモリ(ヒープ)の制限があります。

しかし、世にあるSL内のスクリプトで
メモリチェックしているスクリプトって少ないと思います。
大抵は不要なので問題ないのですが、
リストなどに追加され続けるものに関しては気にする必要があります。

メモリが無くなるとこんなメッセージが出ます。

Script run-time error
Stack-Heap Collision


原因は違うかもしれませんが、見かけたことはあると思います。
こうなってはもう正常な動作はしなくなります。

そこでメモリが少なくなったら解放してあげる必要があるのですが、
実験をしていてあることに気付きました。

メモリの解放されるタイミングがわかりません。

少なくともスクリプト実行中(スクリプト上の処理中)には解放されないようにみえます。

例えば、こんなことをすると無限ループに陥ります。※1
メモリ対策をしたばっかりにフリーズします。
while (llGetFreeMemory() < 1024) {
    lst = llDeleteSubList(lst, 0, 0); // 先頭から1つ削除
}
ループを抜けるような仕組みにするか、別の方法にする必要があります。

ちなみに関数の処理やメモリの再確保のタイミングは内部処理に関連するみたいなので
よくわかりませんでした。
全然メモリ残量が減らなかったり、突然予想以上に減ったりすることもあるので
余裕をみておいたほうがいいです。


※1 放置し続けたらいつの日か解放されてループを抜けるのかもしれませんが、どちらにしても実用的ではありません。

同じカテゴリー(スクリプト)の記事画像
オセロみたいな物を作ってみた
パーティクルが出たり、出なかったり、らじばんだり
実行中のチェック勝手に外れる
スタックオーバー?
同じカテゴリー(スクリプト)の記事
 オセロみたいな物を作ってみた (2009-02-18 23:38)
 パーティクルが出たり、出なかったり、らじばんだり (2008-08-11 22:33)
 実行中のチェック勝手に外れる (2008-06-12 14:00)
 rezに失敗する~; ; (2008-06-06 02:18)
 Tips修正。。 (2008-05-26 23:50)
 LSLでプリプロセッサ (2008-05-18 14:18)
Posted by れむ at 11:55 │スクリプト
コメントありがとう♪
 このメッセージはよく見るけど、メモリが無いのが原因だったんだ。
 よくわからないけどww
Posted by そうだら at 2008年03月09日 12:18
見た事あるけど
ぜんぜん気にした事なかったW

って話はそれますが

トトゴクのレムさんチップジャー

『物理だW×2』ワーイヾ(´ρ`)ノ゛ワーイ

って
面白い発想のあまり
皆が押し合いへし合いで
踏み絵状態になってましたよWWW
Posted by 某 ト○ロ団長某 ト○ロ団長 at 2008年03月09日 19:52
> そうだらさん
メモリが原因なのですが、
よくわからないことばかりです。


>団長さん
チップありがと~~(>_<)
だ、だいじょうぶよ。
邪魔なら(飽きたら)壁に移動します。。
Posted by れむれむ at 2008年03月10日 00:06