gpt4 book ai didi

java - 在过时的 JVM 上从数组构造字符串时的 JVM ACCESS_VIOLATION_EXCEPTION

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:38 27 4
gpt4 key购买 nike

我遇到了一个非常奇怪的案例 - 我有以下代码:

new String(data, position, len, Charset.forName("windows-1255"));

其中data是一个byte[]positionlenints.
当我在 jdk 1.6.0_38 上运行它时,它运行得非常慢(对于一组迭代 411 秒),当我运行它时:

new String(data, position, len);

它在不到 1 秒的时间内运行相同的迭代。更多数据:

  • 当我调试它时,在进入构造函数(使用字符集)时它抛出 JVM ACCESS_VIOLATION_EXCEPTION 并终止。
  • 当我在 jdk 1.7.0_10 上运行时它运行良好(不到 1 秒)

谁能解释一下这种奇怪的行为?

最佳答案

我想你遇到了 this问题。这篇文章声称您使用的构造函数效率低下,因为它总是对提供的 byte[] 缓冲区进行防御性复制,这会导致频繁的 GCing。我想如果你进行了足够长的迭代,性能差异就会变得那么明显——就像文章摘要中提到的那样。

至于访问vialoation,它似乎是this问题。

关于java - 在过时的 JVM 上从数组构造字符串时的 JVM ACCESS_VIOLATION_EXCEPTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25842777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com