cari

Rumah  >  Soal Jawab  >  teks badan

java new String(byte)当参数和String引用当参数有什么区别,为什么性能差别很大?

byte[] test = (sb.toString()).getBytes();
testString(new String(test));

相对于:

byte[] test = (sb.toString()).getBytes();
String temp = new String(test);
testString(temp);

这样有什么区别?为什么第一种比第二种性能方面低很多,而且会有莫名其妙的异常。出问题经常的由于byte[]数组比较大。小的时候看不出来问题。

ringa_leeringa_lee2847 hari yang lalu688

membalas semua(1)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 09:57:19

    Jika anda tidak tahu apa-apa tentang JVM, adalah disyorkan untuk tidak bercakap tentang prestasi dan prestasi tidak diukur dengan cara ini.

    Parameter dan pembolehubah tempatan kaedah

    sepadan dengan jadual pembolehubah tempatan 3 dalam tindanan mesin maya 1 bingkai tindanan 2 Jenis rujukan yang diduduki SLOT slot, jadi Perbezaan antara cara penulisan kedua anda ialah bingkai tindanan mempunyai satu lagi slot Selepas mencipta objek String, rujukan objek adalah pada tindanan operan 4 disimpan ke jadual pembolehubah tempatan melalui arahan aload dan kaedah testString dipanggil Apabila menggunakan arahan aload, tolaknya ke bahagian atas tindanan operan.

    Ringkasan: Terdapat satu lagi SLOT dalam bingkai tindanan dan dua lagi arahan dalam panggilan kaedah Arahan yang berlebihan akan dihapuskan selepas pemanasan JIT Tiada perbezaan sebenar.


    1. 2.5.2 Timbunan Mesin Maya Java ↩
    2. 2.6. Bingkai ↩
    3. 2.6.1 Pembolehubah Setempat ↩
    4. 2.6.2 Timbunan Operand ↩

    balas
    0
  • Batalbalas