ObservableItemの作成するFWコードを見直す。
ObservableItemはDataModelと共通した処理を同じ個所で行うために、DataModelで作成するDataItemコンストラクタを利用しており、ObservableItemを作成するたびにDataItem生成のためのコンストラクタを作成し、ObservableItemからそのコンストラクタが参照できるようになっている。
そのため、ObservableItem1つにつきDataModel1つと同じくらいのメモリを使用していると考えられる。
とりあえず、ObservableItemを作るときにDataItemコンストラクタを作成して使用するのはそのままにして、そのコンストラクタがObservableItemから参照できない(使いきり)になるようにする。
// 現在のcreateObservableItem
// コンストラクタを新規に生成してをそれをnewして返している
return new (createDataItemConstructor(schema, itemValueCheckFuncs))();
// これを以下のように変更
var item = new (createDataItemConstructor(schema, itemValueCheckFuncs))();
return new ObservableItem(item);
//...
function ObservableItem(item){
// itemから必要なプロパティをコピー
this[prop] = item[prop];
...
}
ObservableItemの作成するFWコードを見直す。
ObservableItemはDataModelと共通した処理を同じ個所で行うために、DataModelで作成するDataItemコンストラクタを利用しており、ObservableItemを作成するたびにDataItem生成のためのコンストラクタを作成し、ObservableItemからそのコンストラクタが参照できるようになっている。
そのため、ObservableItem1つにつきDataModel1つと同じくらいのメモリを使用していると考えられる。
とりあえず、ObservableItemを作るときにDataItemコンストラクタを作成して使用するのはそのままにして、そのコンストラクタがObservableItemから参照できない(使いきり)になるようにする。