メモリー・リークを防ぐために、2 つのメモリー管理関数を使用できます。 メモリー・リークはアプリケーションの速度を低下させ、ブラウザーの異常終了の原因となることもあります。
この問題は主に、ウィジェットまたは組み込みハンドラーを関数内で宣言した場合に発生します。 これらの関数内宣言は、メモリーを実行時に割り振ります。関数が終了した後も、ユーザーがブラウザーのタブを閉じるまで、ブラウザーはメモリーをオペレーティング・システムに返しません。
それぞれのメモリー管理関数は、ブラウザーにメモリーの制御を返すことを要求します。ブラウザーは一般に、遅延後で、かつアプリケーションがまだ実行している間に、この要求を実行します。
関数は以下のとおりです。
これらの関数は、いずれも値を返しません。
Function myProvider (widget any in) returns(Box)
return (new Box {children = [new Button{text = "Memory leak"}]});
end
この例では、ツールチップ・プロバイダーは、その機能の外部からは参照できないボックスを作成し、ボックスそのものには無名ウィジェットが組み込まれます。 ボックスを参照できないということは、ボックスまたはその無名の子をメモリー管理機能に渡すことができないことを意味します。
myBox Box{};
Function myProvider (widget any in) returns(Box)
myBox.children = [ new Button{text = "Problem solved"} ];
return(myBox);
end
UtilLib.destroyWidgetChildren(myBox);