有两种简单的方法可以减少您正在创建的对象的数量,其中一种或两种可能适用于您的目的,尽管没有规范我无法确定。
1) 使用高度可变的对象。如果您需要模拟大量相似度很高但不必相互交互的事物(例如,十万次模拟十几个粒子交互,每次粒子略有不同),然后一遍又一遍地使用相同的十几个对象,并利用 mutator 函数将负担转移到 CPU。但是,我怀疑按顺序使用许多对象对您来说是个问题,因为 Java 已经内置了垃圾收集。
2)将相似对象之间的相似性作为自己的类。例如,如果您需要大量对象,并且注意到其中很大一部分共享许多内存密集型特征,请将这些特征存储在它们自己的类中,并在每个对象中引用该类的单个实例具有完全相同的字段值的对象。例如,考虑一组 Apple 对象。您可以为 GrannySmithApples、MackintoshApples、RedDeliciousApples 创建不同的类,并使用它们自己的静态字段来实现跨类共享的特征(例如 RedDeliciousApples 在抽象类 Apple 中声明了一个静态字符串字段并设置为“red”),或者(允许更多运行时的灵活性)每个类都可以有一个 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);
将只为所有四个苹果使用一个 CoreCharacteristic,将存储 CoreCharacteristic 字段所需的内存量减半,否则这些字段将被每个 Apple 复制。