java - 如何将大表放入内存中?

标签 java performance

我有一个Java Map<String, List<String>> .

有没有办法改进这一点,使其使用更少的内存,而又不会对性能产生太大影响?

最佳答案

三个想法:

  • 编码字节数组可以提供比字符串更少的内存密集型表示,特别是如果字符串数据实际上使用 8 位(或更少)字符集。

  • 字符串列表可以表示为单个字符串,列表组件之间具有可区分的字符串分隔符。

  • 字符串数据通常是可压缩的。

根据数据的性质,这些可以轻松地将列表空间减少 2 倍。

缺点是您可能需要完全或部分重建原始 List<String>对象,这会影响性能。

您还应该考虑使用非内存驻留表示;例如传统数据库、NOSQL 数据库或“对象缓存”框架。如果您需要执行“完整”垃圾回收,或者与其他应用程序竞争物理内存,那么具有非常大堆的 JVM 往往会导致性能问题。

关于java - 如何将大表放入内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672208/

相关文章:

java - hadoop 类型中的值类型是否必须实现可写接口(interface)?

Java JSON 返回一个数组作为值

javascript - 在 javascript 中使用 switch 语句而不是一堆 if()else if() 是否有任何性能提升?

java - 为什么我的 spring boot gradle 项目使用 spring jpa 连接到 oracle 抛出异常?

java - BCrypt 性能恶化

java - 从一个 fragment 打开到另一个 fragment 时多次单击单个按钮?

android - 如何在android studio中检查android应用程序的大小?

java - jdbc 性能

c# - 不同的 linq 使用顺序之间有性能差异吗?

MySQL 与 MongoDB 1000 次读取