我有一个Java Map<String, List<String>>
.
有没有办法改进这一点,使其使用更少的内存,而又不会对性能产生太大影响?
最佳答案
三个想法:
编码字节数组可以提供比字符串更少的内存密集型表示,特别是如果字符串数据实际上使用 8 位(或更少)字符集。
字符串列表可以表示为单个字符串,列表组件之间具有可区分的字符串分隔符。
字符串数据通常是可压缩的。
根据数据的性质,这些可以轻松地将列表空间减少 2 倍。
缺点是您可能需要完全或部分重建原始 List<String>
对象,这会影响性能。
您还应该考虑使用非内存驻留表示;例如传统数据库、NOSQL 数据库或“对象缓存”框架。如果您需要执行“完整”垃圾回收,或者与其他应用程序竞争物理内存,那么具有非常大堆的 JVM 往往会导致性能问题。
关于java - 如何将大表放入内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672208/