gpt4 book ai didi

java - 我正在寻找处理堆内存 Java 应用程序中重复字符串的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 06:42:09 25 4
gpt4 key购买 nike

我正在分析我的应用程序的堆转储,发现堆中有很多重复的字符串。我正在寻找一种方法来最大程度地减少重复字符串所消耗的内存。

下面是 String 对象的列表及其在堆中的计数。

Duplicate String Percentage Wasted Count
"java.lang.Throwable\n at
org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:247)\n
at org.apache.log4j ...[length 4460]"
1.25mb 147
"java.lang.Throwable\n at
org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:247)\n
at org.apache.log4j ...[length 10742]"
861.96kb 42
"java.lang.Throwable\n at
org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:247)\n
at org.apache.log4j ...[length 10744]"
861.96kb 42
"file" 610.99kb 19,495
"java.lang.Throwable\n at
org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:247)\n
at org.apache.log4j ...[length 4493]"
608.6kb 70

最佳答案

从 JDK 8u20 切换到 G1GC,它具有字符串重复数据删除功能(参见 JEP 192: String Deduplication in G1)。

从 JDK 9 开始,为了进一步减少内存消耗,ISO-8859-1/Latin-1 字符串可以在内部压缩为字节(参见 JEP 254: Compact Strings)。

关于java - 我正在寻找处理堆内存 Java 应用程序中重复字符串的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006616/

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