如何提高 Java 应用程序内存的效率?
2022-09-02 05:15:27
如何优化具有大量(数百万)长期存在对象的应用程序的堆大小使用情况?(大缓存,从数据库加载大量记录)
- 使用正确的数据类型
- 避免使用 java.lang.String 来表示其他数据类型
- 避免重复的对象
- 如果事先知道值,请使用枚举
- 使用对象池
- String.intern() (好主意?)
- 仅加载/保留您需要的对象
我正在寻找一般编程或Java特定的答案。没有时髦的编译器开关。
编辑:
优化可在堆中出现数百万次的 POJO 的内存表示形式。
使用案例
- 在内存中加载一个巨大的csv文件(转换为POJO)
- 使用休眠从数据库中检索数百万条记录
答案的恢复:
- 使用蝇量级图案
- 写入时复制
- 与其加载具有 3 个属性的 10M 对象,不如使用 3 个大小为 10M 的数组(或其他数据结构)更有效?(操作数据可能很痛苦,但如果你真的内存不足......)