一次String的错误使用
今日,在写代码的过程中,程序执行一个方法居然出现了heap space溢出的异常。
从来还没有遇到这样的异常,打断点发现是做字符串拼接时出现此异常。
所以知道了是String使用的异常,因为我做的操作是要大量的拼接字符串,次数很多。
每次String拼接一次之后,都相当于是重新new了一个String,然后拼接过后的字符串赋值给了新的String对象。
最终造成了堆内存溢出。
查阅资料后,发现String虽然在某些时候效率高一点,但是要大规模拼接字符串是十分“笨重”的。
String s1 = "hello" + "world";//这种方式时效率最高;
----------StringBuilder----------
StringBuilder才是我应该使用的正确类型,它是一个线程不安全的类型,也是不同线程环境情况下的的StringBuilder的一个替换,方法主要有append,insert。
----------StringBuffer------------
StringBuffer是一个线程安全的类型,方法与StringBuilder大概一致,但是它的执行效率要低一些。
一次String的错误使用的更多相关文章
- 在MySQL向表中插入中文时,出现:incorrect string value 错误
在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8. 一.修改数据库的默认字符集 ...
- MySQL的Incorrect string value错误
用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...
- curl Array to string conversion 错误
0x00 故障 由于GuzzleHttp在iis上使用错误,于是开始替换其为Unirest,没想到发送了一个curl Array to string conversion 错误 0x01 原因 跟踪调 ...
- java.lang.NumberFormatException: For input string: "1608020001 " 错误
错误: java.lang.NumberFormatException: For input string: "1608020001 " at java.lang.Numbe ...
- Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误
错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...
- 关于spring java.lang.IllegalArgumentException: Name for argument type [java.lang.String] 的错误
况描述: web工程在windows环境eclipse下编译部署没有问题,系统升级时需要运维从Git取相应的源码并编译部署到线上机器,部署启动正常没有错误,当访问业务的action时报错,如下. 错误 ...
- android switch(String)错误:Cannot switch on a value of type String for source level below 1.7
switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型只有JDK版本1.7以上才可以支持String 设置如下可解决问题:(若没有JDK1.7版,可下载一下安装)菜 ...
- MySQL:1366 - Incorrect string value错误解决办法
今天使用navicat向MySQL中插入中文时,报错: - Incorrect string value:... 在我自己数据库设计之初,没有设计好字符编码格式的问题. 使用如下语句解决: alter ...
- 执行Hive时出现org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.NumberFormatException: For input string: "1s"错误的解决办法(图文详解)
不多说,直接上干货 问题详情 [kfk@bigdata-pro01 apache-hive--bin]$ bin/hive Logging initialized -bin/conf/hive-log ...
随机推荐
- Docker常用镜像
Docker,具有快捷方便的特性,机器上不需要安装软件和进行各种配置,拉取镜像,一行命令即可启动服务,不使用时,一行命令关闭容器即可,快捷方便,干净.利索.建议将本地的redis.mysql.kafk ...
- vue项目笔记
参考了很多网上其他人的 1.安装 npm与cnpm:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等):npm可以在node ...
- Docker 命令查询
Docker — 从入门到实践 Docker 命令查询 基本语法 Docker 命令有两大类,客户端命令和服务端命令.前者是主要的操作接口,后者用来启动 Docker Daemon. 客户端命令:基本 ...
- vue关于为空使用默认值
参考地址:https://segmentfault.com/q/1010000009898107/a-1020000009898747 实现效果如下:
- [HNOI2007]神奇游乐园(插头DP)
题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大. 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i ...
- 第五周java学习总结
学号 20175206<Java程序设计>第五周学习总结 教材学习内容总结 6.1 接口 为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口. 使用关键字interf ...
- Transformer【Attention is all you need】
前言 Transfomer是一种encoder-decoder模型,在机器翻译领域主要就是通过encoder-decoder即seq2seq,将源语言(x1, x2 ... xn) 通过编码,再解码的 ...
- docker 基础知识分享ppt
给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx
- IIS 常用命令
Ø 简介 本文主要介绍 IIS 常用的命令,主要包含以下内容: 1. IIS 重启方法 2. 站点重启方法 3. 应用程序池重启方法 1. IIS 重启方法 1) 重启 IIS ...
- docker搭建及使用:centos7.0+docker+flask+nginx
flask笔记: centos7安装Docker: yum install docker 启动docker服务: service docker start 构建基本镜像: sudo docker pu ...