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

相关推荐

  • Git clone代码报“fatal: Out of memory, malloc failed (tried to allocate xxxx bytes)”的解决办法

    问题描述: 之前clone代码的时候一直没问题,今天clone代码的时候突然报错“fatal: Out of memory, malloc failed (tried to allocate 1058576000 bytes)”。 按报错的理解就是本机的内存不足了,查看了本机运行的服务和进程,没有可以停掉的服务和进程,那该怎么办呢? 查询资料都说的是因为GI…

    2023年3月21日
    11.3K16110
  • log4j 0day漏洞情况分析及说明

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

    2022年8月3日
    78100
  • 微信小程序在Android、iOS、Windows、MacOS的文件存放路径

    一、微信小程序文件存放路径 /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/ iOS越狱:/User/Containers/Data/Application/{{系统UUID}}/Library/WechatPrivate/{{user哈希值}}/WeApp/LocalCache/rel…

    学习笔记 2022年12月4日
    5.0K920
  • 【Vue学习总结】2. Vue目录结构分析

    接上篇《1.Vue环境搭建、运行第一个项目》 上一篇我们主要讲解了Vue的环境的搭建,本篇我们主要来分析Vue项目的目录结构。 一、Vue项目文件目录详情介绍 下面就是上一篇我们搭建的一个样例工程的完整结构(install后): 其中包括了node_modules、build、config、src、static以及test文件夹,还有index.html的超…

    2022年7月6日
    84010
  • Java复制文件&文件夹工具类

    Java复制文件&文件夹工具类 package cn.utils; import java.io.*; /** * 复制文件夹 * */ public class CopyDirUtil { /** * 复制文件夹 * * @param resource 源路径 * @param target 目标路径 */ public static void c…

    2022年6月17日
    25.8K51990

回复 Everettsep

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

评论列表(56条)