当前位置: 首页 > news >正文

【调优】Java 调优学习笔记之字符串

一、紧凑字符串(Compact Strings)
  • 核心机制
    Java 9 引入 Compact Strings 特性(Java 11 默认开启 -XX:+CompactStrings),当字符串仅包含 Latin-1 字符(ASCII 范围,0-255) 时,使用 8 位字节数组(byte[] 存储;若包含非 Latin-1 字符,则仍使用 16 位字符数组(char[]
    ⚠️ 注意:Java 8 及之前版本统一使用 char[](每个字符占 2 字节,属于 16 位字符数组)。

  • 内存优化效果
    对于纯 Latin-1 字符串场景,Java 11 的内存占用约为 Java 8 的 75%(字符存储字节数减半)。在常规 Java 应用中,字符串可能占据堆内存的 50% 以上,因此优化效果显著。

二、重复字符串处理
1. 字符串去重(String Deduplication)
  • 开启条件

    • 自 Java 8 Update 20(JDK 8u20) 引入,需通过 -XX:+UseStringDeduplication 开启(默认 false)。
    • 必须搭配 G1 垃圾收集器(需添加 -XX:+UseG1GC),且仅对 老年代字符串 生效。
  • 未默认开启的原因

    1. GC 停顿时间增加:去重操作由 G1 回收线程在 新生代回收 或 混合回收阶段 同步执行,需扫描存活字符串并合并重复项,可能延长 STW(Stop The World)时间。
    2. 内存开销风险:若重复字符串较少,去重所需的 哈希表存储(记录唯一字符串) 和 元数据追踪 可能导致内存占用增加。
2. 字符串驻留(String.intern ())
  • 机制说明
    String.intern() 会将字符串存入 字符串常量池(位于 JVM 堆外的元空间),而非原生内存。

    • Java 8 及之后,常量池的哈希表初始大小为 60013(可通过 -XX:StringTableSize 调整为质数,如 1009、32791)。
    • 当存储的字符串数量超过哈希表容量时,会发生 哈希碰撞,碰撞的字符串以 链表 形式存储。
  • 性能隐患
    链表过长会导致 intern() 查询时间复杂度退化为 O (n),建议:

    • 避免在循环中频繁调用 intern()
    • 对长字符串或大量唯一字符串,慎用 intern()

补充说明

  • 分析工具

    • jmap -histo:live <pid>:分析堆中字符串实例数量及占比(java.lang.String 条目)。
    • -XX:+PrintStringDeduplicationStatistics:打印去重统计信息(如去重率、节省内存量)。
  • 参数调优示例

    # Java 11 调优参数示例(开启紧凑字符串、G1 GC、字符串去重)
    java -XX:+CompactStrings -XX:+UseG1GC -XX:+UseStringDeduplication -jar app.jar

相关文章:

  • Python unittest
  • ProtoBuffer在Android端的编译
  • 若依代码生成
  • 一文读懂GRPC
  • STM32之温湿度传感器(DHT11)
  • python 实现 web 请求与相应
  • NIFI的处理器:RouteOnContent 1.28.1
  • 车载软件架构 --- FLASH bootloader 设计要点
  • Accelerate 2025北亚巡展正式启航!AI智御全球·引领安全新时代
  • Nginx核心功能
  • 【朝花夕拾】S32K144 backdoor key解锁后劳德巴赫或者JLINK更新app
  • GraphRAG使用
  • Java集合再探
  • 3452. 好数字之和
  • Java 模块化系统(JPMS)
  • 4.2.4 Thymeleaf内置对象
  • 无人机避障——深蓝学院浙大栅格地图以及ESDF地图内容
  • Mybatis的基本结构和说明
  • 支持PAM特权账号管理和人脸识别,JumpServer开源堡垒机v4.10 LTS版本发布
  • 选择排序 Python实现
  • 网站建设中代码/seo网络推广是干嘛的
  • 浦江做网站/seo一键优化
  • 百度西安研发中心/站长工具seo综合查询网
  • 网站制作哪家公司好/百度竞价排名模式
  • 常州网站建设机构/最新实时大数据
  • 网站优化排名推荐/网络站点推广的方法