代码之家  ›  专栏  ›  技术社区  ›  tgkprog

调整许多HashMaps的内部表和entrySet字段的大小。在java 8中,创建后在堆中占用更少的空间

  •  0
  • tgkprog  · 技术社区  · 6 年前

    我们有一些遗留代码是在21世纪初编写的,到目前为止运行良好,除了当我们向系统添加更多用户时,它每天都有内存异常

    代码中有数千个HashMaps(当然不是最好的设计),这些HashMaps只在创建时在循环中修改,之后保持只读。

    当我运行内存分析器时,它说在HahsMaps中有15%的堆由未使用的空间组成。

    对于这些实例,如果我们使用反射使条目集可访问并调整其大小,使其大小等于实际需要的大小,迭代器是否会失败?

    在初始构建之后,这些映射是只读缓存。我们在Java 6上运行代码,在Java 8上运行一些实例。不会升级JVM版本,再过10-12个月,新代码就会投入生产并替换当前的代码。

    0 回复  |  直到 6 年前