タグ

ブックマーク / blog.y-yuki.net (1)

  • Java 6 - String#substringによるメモリリークの可能性 - 覚えたら書く

    (もともとQiitaに書いていたものを、ここに移動させました。) ※以下Java 6までの問題です。Java 7では解決されています String#substring は新しい文字列を new String で生成するにも関わらず切り出し前の文字列を内部(のchar配列)で保持してしまっています。 内容は通常は意識する必要はありませんが、巨大な文字列をsubstring操作する際はメモリリーク等につながる場合がありますので注意が必要です。 (String#splitにも同様の問題があります) String s1 = "0123456789"; // -> s1内部のchar配列は {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} String s2 = s1.substring(5); // -> s2内部のchar配列は {0, 1, 2, 3, 4, 5, 6, 7, 8

    Java 6 - String#substringによるメモリリークの可能性 - 覚えたら書く
    advblog
    advblog 2023/09/28
  • 1