mrubyが対象(のひとつ)にしているデバイス系環境では、プログラムを格納するROMには余裕があっても、実行時メモリであるRAMには余裕がないという話をよく聞きます。ROMはフラッシュでメガ単位の容量があっても、RAMは数十KBとかいうケースも珍しくありません。 そこで、12/24から25にかけての24時間で、どれだけメモリ削減できるか一人ハッカソンを開催しました。ぼっち上等。 基本戦略 今回のメモリ削減ハックの基本となるのは、Cの文字列定数領域はfreeの対象にならないので、mallocした領域にコピーする必要はない、という戦略です。今回は3件の改善を行いますが、いずれもこの戦略を用いています。 static symbol まずは、symbolテーブルのmalloc量を削減しましょう。symbolの登録には mrb_intern(mrb_state *mrb, const char *s