作成するオブジェクトの数を減らす簡単な方法が 2 つあります。いずれかまたは両方の方法が目的に合っている可能性がありますが、仕様がないと確信が持てません。
1) 非常に変更可能なオブジェクトを操作します。相互に作用する必要はないが、類似性が非常に高い多数のものをシミュレートする必要がある場合 (たとえば、毎回わずかに異なる粒子で相互作用する 12 個の粒子の 10 万回のシミュレーション)、次に、同じ十数個のオブジェクトを何度も使用し、ミューテーター関数を使用して負荷を CPU に移します。ただし、Java には既に組み込みのガベージ コレクションがあることを考えると、多くのオブジェクトを順番に使用することが問題になるとは思いません。
2) 類似オブジェクト間の類似点を独自のクラスにします。たとえば、多くのオブジェクトが必要であり、それらのかなりの部分が多くのメモリを集中的に使用する特性を共有していることに気付いた場合、それらの特性を独自のクラスに格納し、そのクラスの単一のインスタンスをすべてのオブジェクトで参照します。まったく同じフィールド値を持つオブジェクト。例として、Apple オブジェクトのセットを考えてみましょう。GrannySmithApples、MackintoshApples、RedDeliciousApples に対して、クラス全体で共有される特性のための独自の静的フィールドを持つさまざまなクラスを作成することができます (たとえば、RedDeliciousApples には、抽象クラス Apple で宣言され、"red" に設定された静的な String フィールドがあります)、または (より多くを許可するため)実行時の柔軟性) 各クラスは CoreCharacteristic のインスタンスを持つことができます。
CoreCharacteristic c = new CoreCharacteristic(<some parameters>);
Apple apple1 = new Apple(c);
Apple apple2 = new Apple(c);
Apple apple3 = new Apple(c);
Apple apple4 = new Apple(c);
は、4 つのリンゴすべてに対して 1 つの CoreCharacteristic のみを使用し、それ以外の場合は各リンゴに対して複製される CoreCharacteristic のフィールドを格納するために必要なメモリ量を 4 分の 1 に減らします。