は、シリアル化とは関係ありません。少なくとも概念的なレベルで。
ポイントは:あなたのカスタムオブジェクトOがXバイトのデータを消費するときです。それらのXバイトのデータは、オブジェクトOがJVM内で「生きている」限り、JVM内に割り当てられます。
つまり、画像のバイトをオブジェクトに直接入れると、これらのオブジェクトがの新しいによって作成されているか、またはいくつかのバイトストリームから読み込まれた場合、またはn異なるソースから読み取られる場合は問題ありません。
まさにその理由から、イメージバイトを直接「ビジネス」オブジェクトに「含める」ことを試みます。たとえば、イメージをファイルとしてハードドライブに保存することによって、オブジェクトにファイル名を追加するだけです。意味:実際にドライブから画像をロードする画面に「レシピ」を表示した場合のみ。それをユーザに表示する。
だからあなたの質問への答えは:あなたが一つのファイルから、またはnはファイルからシリアライズされたオブジェクトをロードする場合、プログラムのメモリ消費は気にしません。
あなたのメモリ消費量は、「レシピオブジェクト」に何らかの形で関連付けられている「リソース」をどのように処理するかによって決まります。
最後に行うことは、お客様の要件によって異なります。我々は、いくつかの "平均的なデスクトップ"マシンで想定されている小さなJavaプログラムについて話している場合、あなたのJVMに500または1000の「ライブ」オブジェクトを保持することはOKかもしれません。 1つ1つがピクチャで500KBを消費しても(しかし、ここではすでに250MBのRAM消費量に簡単に達していることに注意してください)。
しかし、携帯電話で動作しているアプリについて話している場合は、あなたは確かに 250 MBのメモリを浪費し、そこに500のオブジェクトを保持したい。
ので、ほとんどの場合には、合理的なアプローチは、より多くのようになります。
- 、彼らがしようとしているだけで「ロード」のレシピ
- メモリ内のすべての時間を知らレシピのリストを維持
- は、一般に、指定したフォームをシリアル化オブジェクトを変換しながら
に属する(画像など)「リソース」からレシピを分離する「使用」すること保存された場所。そして、必要なときに、保存された場所から再度読む。 – SachinSarawgi