java编译器对字符串+运算的优化导致的有趣现象
2012-04-23 20:29
274 查看
以前写了个字符串是否来自池的文章
只说明了有的字符串来自池,有的是在堆上新建,但是没有深究,只从现象去推测了,今天我们来看看究竟发生了什么
下图(源码和字节码)很清晰地看到s3实际上是新建了一个StringBuilder,然后append了def,然后再toString的,难怪会不同了
再来看下图,s1和s2定义为final之后,字节码简洁了很多,s3的值明确为abcdef且来自常量池
只说明了有的字符串来自池,有的是在堆上新建,但是没有深究,只从现象去推测了,今天我们来看看究竟发生了什么
下图(源码和字节码)很清晰地看到s3实际上是新建了一个StringBuilder,然后append了def,然后再toString的,难怪会不同了
再来看下图,s1和s2定义为final之后,字节码简洁了很多,s3的值明确为abcdef且来自常量池
相关文章推荐
- 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
- Java 程序优化:字符串操作、基本运算方法等优化策略(二)
- 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
- Java 程序优化:字符串操作、基本运算方法等优化策略
- Java 程序优化:字符串操作、基本运算方法等优化策略(一)
- Java 程序优化:字符串操作、基本运算方法等优化策略
- V8 使用“常量折叠”优化技巧,导致幂(**)运算有时候不等于 Math.pow()
- 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
- java用split分割字符串的一个有趣现象
- Java 程序优化:字符串操作、基本运算方法等优化策略
- Java 程序优化:字符串操作、基本运算方法等优化策略
- Java 程序优化:字符串操作、基本运算方法等优化策略
- printf被编译器优化导致纯字符串打印问题(gcc不使用标准库)
- Java 字符串操作、基本运算方法等优化策略
- Java 程序优化:字符串操作、基本运算方法等优化策略(一)
- 照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象
- Java字符串操作、基本运算方法等优化策略
- Java 程序优化:字符串操作、基本运算方法等优化策略(二)
- java中使用split分割字符串一个有趣的现象
- 【性能优化】PX_MISMATCH导致Oracle实例挂起