Rumah > Soal Jawab > teks badan
byte[] test = (sb.toString()).getBytes();
testString(new String(test));
相对于:
byte[] test = (sb.toString()).getBytes();
String temp = new String(test);
testString(temp);
这样有什么区别?为什么第一种比第二种性能方面低很多,而且会有莫名其妙的异常。出问题经常的由于byte[]数组比较大。小的时候看不出来问题。
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.