作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我遇到了一个非常奇怪的案例 - 我有以下代码:
new String(data, position, len, Charset.forName("windows-1255"));
其中data
是一个byte[]
,position
和len
是int
s.
当我在 jdk 1.6.0_38 上运行它时,它运行得非常慢(对于一组迭代 411 秒),当我运行它时:
new String(data, position, len);
它在不到 1 秒的时间内运行相同的迭代。更多数据:
谁能解释一下这种奇怪的行为?
最佳答案
我想你遇到了 this问题。这篇文章声称您使用的构造函数效率低下,因为它总是对提供的 byte[] 缓冲区进行防御性复制,这会导致频繁的 GCing。我想如果你进行了足够长的迭代,性能差异就会变得那么明显——就像文章摘要中提到的那样。
至于访问vialoation,它似乎是this问题。
关于java - 在过时的 JVM 上从数组构造字符串时的 JVM ACCESS_VIOLATION_EXCEPTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25842777/
我遇到了一个非常奇怪的案例 - 我有以下代码: new String(data, position, len, Charset.forName("windows-1255")); 其中data是一个b
我是一名优秀的程序员,十分优秀!