追記: なんかごちゃごちゃしたのでまとめ直しました。
LM for Mac OS X のメモリ使用量が増えていくというご指摘をいただきました。(ありがとうございます!)
早速調べてみたところ...
こんな感じでした。
※横軸が時間 (1.00 min / div)、縦軸が leak している memory の量 (1 分のちょっと手前の、一番高い三角形が 14 KB 程度)。
※LM を起動して連携状態に設定し、AppleScript で tell application "iTunes" to next track を無限ループしてテスト。
開発環境 (REALbasic) の AppleEvent 実装に「一つの AppleEvent instance を何度も使い回して Send すると memory leak する」という bug があるようです。2007 Release 5 と 2009 Release 5.1 (最新版) で再現したので、REAL Software に bug report を提出しておきました(Case ID:
10930。専用の Feedback アプリケーションがインストールされていないと見られません)。
想像ですが、Rb のフレームワークが AppleEvent の戻り値を書き込むときに、前に書いてある object を free せずに上書きしているのでしょう。
ということで、取り敢えず Send するたびに別の AppleEvent instance を生成すれば良さそうですね。
修正後のサンプル結果はこんな感じになりました。
まだ若干漏れてるじゃん、という話なのですが、これはまた別の問題のようです。
使っていくうちに酷くなっていく種類のものではないし、900 bytes 程度なので、許容範囲ということで(というか Rb のフレームワーク側の問題っぽいので対処法が分からない...)。
*
この修正は次回のリリースで反映される予定です。
早く出した方が良いのか、ちょっと待ってからがいいのか、悩みどころ。困っている方がおられたら仰ってくださいね。
# なお、AppleEvent の bug なので Windows 版には影響がないハズです。