gpt4 book ai didi

java - 如何通过压缩 Java 中的对象来减少总内存占用?

转载 作者:行者123 更新时间:2023-11-30 01:38:43 26 4
gpt4 key购买 nike

我有一个大约有 20 列的表,其中大部分由 varchar 和小数组成。该表有近 150 万行。但它们中很少有共同之处,例如第 1 列仅包含 100 个不同的字符串,第 2 列有近 1000 个字符串,第 3 列有近 500 个字符串。

现在,我将所有这些列值存储在一个映射中,其中 Key 作为前 5 列,Data 作为其余列。我的任务是这样的,我需要在任务开始时初始化所有这些。

我应该使用什么模式(如享元等)或数据结构来最小化我的对象存储?

为什么我需要预加载所有数据?

假设整个表的数据是一棵树,受害者可以在任何叶子、树干或根部。因此,对于每个条目[这来自不同的地方],我需要查看树中是否有任何匹配项。

最佳答案

内化并不是最好的选择。可以从 PermSpace 收集垃圾,但虚拟机没有针对任何内容进行优化。

您可以实现自己的由共享 char[] 数组支持的 CharSequence 实现。

通过 CharSequence 实现,您将能够实现基本的共享语义,例如内部化字符串或更复杂的语义(考虑子字符串和其他投影)。

自定义 CharSequence 实现也可以进行优化,以比复制 char[] 的 String 类执行更少的内存分配(出于安全原因,如果您有支持 char[],则不需要这样做)在您的完全控制下)。甚至 new String("..").intern() 也会实例化一个新的 String 实例(char[] 数组),该实例会被快速垃圾回收。

关于java - 如何通过压缩 Java 中的对象来减少总内存占用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com