Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
适应容量的Java集合_Java_Memory_Collections_Map_Set - Fatal编程技术网

适应容量的Java集合

适应容量的Java集合,java,memory,collections,map,set,Java,Memory,Collections,Map,Set,是否有用于映射和集合的Java库根据容量改变其表示策略?我有一个应用程序,我们有很多地图和集合,但大多数时候它们都很小,通常只有6个元素或更少 因此,我们已经能够通过编写一些专门的映射和集来提取一些好的内存改进,这些映射和集只使用数组来处理较小的大小,然后默认使用标准Java集和映射来处理较大的容量 然而,如果已经有现成的东西,那么推出我们自己的特殊版本的集合和地图似乎有点愚蠢。我看过番石榴和Apache系列,它们似乎没有提供这样的产品。Trove听起来比JDK的集合总体上更具内存效率,但目前还

是否有用于映射和集合的Java库根据容量改变其表示策略?我有一个应用程序,我们有很多地图和集合,但大多数时候它们都很小,通常只有6个元素或更少

因此,我们已经能够通过编写一些专门的映射和集来提取一些好的内存改进,这些映射和集只使用数组来处理较小的大小,然后默认使用标准Java集和映射来处理较大的容量


然而,如果已经有现成的东西,那么推出我们自己的特殊版本的集合和地图似乎有点愚蠢。我看过番石榴和Apache系列,它们似乎没有提供这样的产品。Trove听起来比JDK的集合总体上更具内存效率,但目前还不清楚它是否会像这样尝试最小化内存使用。

您可能想看看持久数据结构。虽然“持久性”部分对你来说可能有些过分,但它确实满足了你的需求,而且仍然非常快。一旦收藏超过16个实体,就会有一个被提升为的库。

我不知道有这样的库

问题在于,使用最少内存量的表示往往:

  • 与Java Collections API不兼容,这使得集成变得困难,并且
  • 打破抽象界限;e、 g.通过向元素类型添加链接字段
这使得按照这些思路创建通用库变得困难。然后,我们添加了一个问题,即当集合增长和收缩时,一个适应于最小化堆空间使用的表示将不可避免地创建更多的垃圾。。。这将影响CPU性能

您的方法有点有趣,尽管它并没有像最小内存使用那样给您带来任何好处。我假设当集合变大时,您的类实际上是标准实现类的包装器。如果对你有效,我建议你坚持下去