!![[64KB 以上のメモリ割り当てについて|BBS-雑談掲示板/21]] - 陰郎 (2007年01月05日 16時25分27秒) 陰郎です。 大きなメモリチャンクを手に入れようとして困っています。MemPtrNew は API Reference に 「 64KB 以下だよ 」 と明記されているのですが、MemHandleNew は明記されていないにもかかわらず 64KB の制限があるようです。また、ストレージヒープに確保する DmNewHandle も同様に 64KB の制限があるようです。FtrPtrNew を試してみたところ、できることはできたのですが、API Reference には 64KB 制限っぽいことが書かれています。Palm OS 3.5 時代には制限なしだったようなのですが、手元の API Reference には以下のように書かれています。 ""NOTE:Starting with Palm OS 3.5 FtrPtrNew allows allocating chunks larger than 64k. Do keep in mind standard issues with allocating large chunks of memory: there might not be enough contiguous space, and it can impact system performance.  英語力に乏しいためイマイチ理解できないのですが、「64KB以上の大きなメモリチャンクを確保する場合、連続する領域があればできるけれどもシステムのパフォーマンスに影響するかもよ」...というような意味でしょうか? また、他にメモリ確保の方法がありましたらご教示いただけると幸いです。 ::Re: 64KB 以上のメモリ割り当てについて - な (2007年01月05日 16時45分22秒) ::: MemGluePtrNew or BmpCreate ::Re: - 陰郎 (2007年01月06日 01時33分29秒) ::: 有難うございます。MemGluePtrNew だと大丈夫なんですね...BmpCreate は試してませんが、そんな使い方もあるのか...と驚きました。 ::Re:64KB 以上のメモリ割り当てについて - 大野 一樹 (2007年01月06日 02時15分54秒) ::: 英語をそのまま読むと、OS3.5から64K以上のメモリをFtrPtrNewで確保できるけれど、連続領域で取得できない場合にシステムパフォーマンスに影響するので注意しなさいということだと思います。 ::: つまり、全体では、64K以上のエリアが残っていても、メモリが分断されていると、その再配置可能なメモリを移動したりするので、時間がかかる場合があるということを言っているのだと思います。 ::Re: - 陰郎 (2007年01月06日 13時00分09秒) ::: ありがとうございます。そもそもの混乱の理由は、FtrPtrNew API の size パラメータのところに、The maximum chunk size is 64K. とはっきり明記してあることでした。にも関わらずやってみるとできるし、MemHandleNew なんかは書いてないが 64KB 制限がある。このあたりから混乱したようです。上の NOTE の記述内容については、大野さんのご指摘のとおりではないかと思います。再配置可能なブロックを移動することで連続領域を確保するのに時間がかかるのは、おそらく MemGluePtrNew などを使用した場合でも同じなのでしょうね。 ::Re: 64KB 以上のメモリ割り当てについて - な (2007年01月07日 00時40分29秒) ::: 64Kの制限は HotSyncが 64K以上の Heapの転送をサポートしていないからです。連続領域の Allocationに失敗すると、Heap Comapctionを行う為にパフォーマンスが低下しますが、64Kの制限とは関係ない話です。 ::Re: - 陰郎 (2007年01月07日 01時19分46秒) ::: な さん、重ね重ねありがとうございます。不勉強ゆえ、Hotsync における Heap の転送というあたりでついて行けなくなってしまいましたが、ひとまずアプリ実行中のワーク領域として使用する分には 64KB 以上確保しても問題ない...と解釈してみました。Heap compaction というのは、ロックされていない領域を移動することで連続する空き領域を広げることと理解しましたが、これは大きな領域を要求するほど発生する確率は高いことになりますね。 *コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。- 陰郎 (2007年02月07日 00時59分00秒) //{{comment multi}}