OOM专题-String 和 StringBuilder的最大可用长度是多少

String 直接量 超出 65535之后(127KB),IDEA 编译器会报错,因为 直接量是存储在常量池,常量池的定义规定中 有长度限制 2e16 。

String在运行期间的拼接后的最大长度是 int 的最大值 。

StringBuilder 长度是 int 的最大值 2e32 ,21亿 个字符,42亿字节 Byte= 大小4G。

超出长度的需要 用文件流处理,并且及时 清理垃圾对象,腾出足够内存。

OOM优化建议:

1) 最好少使用 String 直接量,因为常量池的内存占用,基本上来讲,很难被清理到。

2)StringBuilder 最好给定 初始长度,避免动态扩容。因为 StringBuilder  内部是 用  char[] 表示的,而同一个数组映射到 磁盘上的存储位置是连续的一块地方。对于java而言,

这样能 保证在 JVM 中的内存占用是连续的块,GC在清理的时候,会 很方便清理一整块地方,而不会有内存碎片的产生。不产生碎片的回收,这样是最好的。

由内存碎片引申出来的建议:

1) 如果已知元素个数,最好指定 容量 。比如 传输给 数据库批处理的参数,预先知道 批处理的总个数,那么最好 手动指定。

List<Object> list = new ArrayList<>(1000000);  
jdbcTemplate.batchUpdate("INSERT INTO T_TEST values(?)", list);

发布者:小站,转转请注明出处:http://blog.gzcity.top/4653.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月30日 18:33
下一篇 2022年7月5日 10:59

相关推荐

  • Apache Log4J2 远程代码执行漏洞处置手册

    1、漏洞概述 Apache Log4j2是一个基于Java的日志记录工具。该日志框架被大量用于业务系统开发,用来记录日志信息。此次爆发的0day漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。 漏洞细节 漏洞PoC 漏洞EXP 在野利用已公开 已公开 已公开 存在 参考链接:https://issues.apache.org/jira…

    2022年8月3日
    731940
  • linux启动php-cgi,linux下php-fpm启动参数及重要配置

    php-fpm我们并不陌生了,下面来介绍一篇php-fpm 启动参数及重要配置的文章,如果各位对于php-fpm 启动参数及重要配置不了解可以进来看看。 约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini I. php-fp…

    学习笔记 2022年9月25日
    413380
  • Android版本 (1.0~12.0) 与API Level (SDK版本1~32) 对应表

    什么是 API 级别? API 级别是一个对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值。 Android 平台提供了一种框架 API,应用可利用它与底层 Android 系统进行交互。 该框架 API 由以下部分组成: 一组核心软件包和类 一组用于声明清单文件的 XML 元素和属性 一组用于声明和访问资源的 XML 元素和属性 …

    Java 2023年6月1日
    25.8K25350
  • 查看apk安装包的miniSdkVersion、targetSdkVersion

    方式一:命令: aapt list -a *.apk | grep SdkVersion用法例如:显示的结果为16进制,需要自己转换成 10进制。 查看apk安装包的miniSdkVersion、targetSdkVersion 方式二:命令: aapt dump badging .apk如果觉得结果集太长了,可以加grep过滤一下: aapt dump b…

    2022年12月9日
    5.6K13840
  • log4j 0day漏洞情况分析及说明

    一、背景简介 2022年7月30日起,各大威胁情报社区及安全圈内开始盛传log4j存在0day漏洞,由于log4j在去年12月爆出严重的jndi注入漏洞,可通过在特定点插入恶意的jndi payload达到执行任意代码进而控制主机的目的。 log4j2(一般简称log4j)是Apache基金会开发维护的开源java日志组件,在以Java开发的系统中大量被直接…

    2022年8月3日
    25700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(36条)