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

相关推荐

  • Java中StringBuilder的常用方法

    在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结: 一、创建Stringbuilder对象St…

    Java 2022年7月5日
    1.5K610
  • Java操作SFTP工具类,文件上传下载删除,获取列表目录

    Java操作SFTP工具类,文件上传下载删除,获取列表目录 需要依赖的Maven包 <!– SFTP –> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>…

    2022年6月1日
    1.4K840
  • 反编译获取微信小程序源码(包含错误解决办法)

    本文章仅用于分享自己反编译的过程以及解决办法,切勿小程序反编译成功后做一些违法事情! 一. 前言 微信小程序的反编译听起来很屌,其实非常简单,就是纯粹的傻瓜式的操作。GitHub有写好的node.js脚本!要想拿到微信小程序源码,找到源文件在手机存放的位置就行,源文件拿到,用反编译脚本跑一下,微信小程序代码包里的所有文件、资源就出来了。 二. 微信小程序的小…

    学习笔记 2022年11月15日
    1.6K1110
  • 查看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日
    7.0K14600
  • Android版本 (1.0~12.0) 与API Level (SDK版本1~32) 对应表

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

    Java 2023年6月1日
    39.4K26220

回复 perevozimgruz_by

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

评论列表(56条)