1. Buat instance kelas tanpa menggunakan kata kunci new
Saat Anda membuat instance kelas menggunakan kata kunci new, semua konstruktor dalam rantai konstruktor dipanggil secara otomatis. Namun jika suatu objek mengimplementasikan antarmuka Cloneable, kita dapat memanggil metode clone() miliknya. Metode clone() tidak memanggil konstruktor kelas apa pun. Jika Anda membuat objek menggunakan pola Pabrik, sangat mudah menggunakan metode clone() untuk membuat instance objek baru.
2. Jangan menginisialisasi variabel berulang kali
Secara default, Java menginisialisasi variabel ke nilai tertentu ketika konstruktor suatu kelas dipanggil. Hal ini harus diperhatikan terutama ketika suatu kelas diturunkan dari kelas lain, karena ketika sebuah objek dibuat menggunakan kata kunci new, semua konstruktor dalam rantai konstruktor akan dipanggil secara otomatis.
3. Gunakan pengecualian dengan hati-hati
Pengecualian buruk bagi kinerja. Melempar pengecualian terlebih dahulu akan membuat objek baru. Konstruktor antarmuka Throwable memanggil metode asli bernama fillInStackTrace(). Metode fillInStackTrace() memeriksa tumpukan dan mengumpulkan informasi pelacakan panggilan. Setiap kali pengecualian dilempar, jVM harus menyesuaikan tumpukan panggilan karena objek baru dibuat selama pemrosesan. Pengecualian hanya boleh digunakan untuk penanganan kesalahan dan tidak boleh digunakan untuk mengontrol aliran program.
Perhatikan dua poin berikut ini. (1) Hindari penggunaan try/catch untuk logika aplikasi. Jika dapat diproses dengan pernyataan logis seperti if dan while, usahakan untuk tidak menggunakan pernyataan try/catch sebanyak mungkin; (2) Gunakan kembali pengecualian ketika penanganan pengecualian diperlukan. , gunakan kembali objek pengecualian yang ada sebanyak mungkin. Karena dalam penanganan pengecualian, menghasilkan objek pengecualian menghabiskan sebagian besar waktu.
4. Benang
Thread dapat memanfaatkan sumber daya sistem secara penuh. Sementara thread lain menunggu pembacaan dan penulisan hard disk atau jaringan, program dapat terus memproses dan menjalankan. Namun penggunaan thread yang tidak tepat juga akan mempengaruhi kinerja program. Contoh: Gunakan kelas Vector dengan benar. Vektor terutama digunakan untuk menyimpan berbagai jenis objek (termasuk objek dengan tipe yang sama dan tipe yang berbeda). Vector menyediakan fungsi perlindungan keamanan thread. Meskipun banyak metode di kelas Vector yang disinkronkan. Tetapi jika Anda telah mengonfirmasi bahwa aplikasi Anda adalah single-threaded, sinkronisasi metode ini sama sekali tidak diperlukan. Selain itu, ketika mencari berbagai objek yang disimpan di Vector, seringkali membutuhkan banyak waktu untuk mencocokkan jenisnya. Jika semua objek ini memiliki tipe yang sama, kecocokan ini sama sekali tidak diperlukan. Oleh karena itu, perlu dirancang kelas atau koleksi single-thread yang menyimpan objek dengan tipe tertentu untuk menggantikan kelas Vector.
Mengenai pengoperasian thread, harap diperhatikan: (1) Cegah sinkronisasi berlebihan. Jika programnya single-thread, pastikan untuk tidak menggunakan sinkronisasi. (2) Menyinkronkan metode daripada menyinkronkan seluruh segmen kode. Menyinkronkan suatu metode memiliki kinerja yang lebih baik daripada menyinkronkan seluruh segmen kode.
5. Coba gunakan variabel lokal
Parameter yang diteruskan saat memanggil metode dan variabel sementara yang dibuat selama panggilan disimpan di tumpukan (Stack), yang lebih cepat.
6. Gunakan variabel statis sebanyak mungkin
Biarkan semua instance berbagi variabel ini.
7. Cobalah untuk menentukan pengubah akhir kelas
Kelas dengan pengubah akhir tidak diturunkan. java.lang.String, menentukan final untuk kelas String mencegah orang mengganti metode length(). Selain itu, jika suatu kelas ditetapkan sebagai final, semua metode kelas tersebut akan bersifat final. Kompiler Java akan mencari peluang untuk menyatukan semua metode akhir, yang dapat meningkatkan kinerja rata-rata 50%.
8. Pembuatan objek dan mengalokasikan ruang dan ukuran yang wajar padanya
Sejumlah besar objek (atau instance) sering kali dihasilkan dalam pemrograman JAVA. Karena sistem tidak hanya membutuhkan waktu untuk menghasilkan objek, mungkin juga memerlukan waktu untuk mengumpulkan sampah dan memproses objek tersebut nantinya. Oleh karena itu, menghasilkan terlalu banyak objek akan berdampak besar pada kinerja program; selain itu, banyak kelas di JAVA memiliki ukuran alokasi ruang default. Untuk kelas StringBuffer, ukuran ruang yang dialokasikan secara default adalah 16 karakter. Jika ukuran spasi StringBuffer yang digunakan dalam program tidak 16 karakter, maka inisialisasi yang benar harus dilakukan.
9. Gunakan I/O non-pemblokiran
Versi JDK yang lebih rendah tidak mendukung API I/O non-pemblokiran. Untuk menghindari pemblokiran I/O, beberapa aplikasi membuat thread dalam jumlah besar (dalam kasus yang lebih baik, kumpulan buffer digunakan). Teknik ini dapat dilihat di banyak aplikasi yang harus mendukung aliran I/O secara bersamaan, seperti server Web. JDK 1.4 memperkenalkan perpustakaan I/O non-pemblokiran (java.nio).
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/Foxalien/archive/2009/12/18/5029659.aspx