Kebocoran Memori Tomcat: Menyelesaikan Ralat Pemasa Pembatalan Pemacu JDBC dan Pernyataan MySQL
Dalam Tomcat 7.x, pengguna mungkin menghadapi amaran kebocoran memori dalam log keluar catalina apabila ditutup. Amaran ini menunjukkan bahawa pemacu JDBC gagal menyahdaftar dengan betul dan bahawa urutan bernama "Pemasa Pembatalan Penyata MySQL" masih berjalan.
Ralat Penyahdaftaran Pemandu JDBC
Walaupun telah dikonfigurasikan kaedah pemusnahan untuk DataSource, mesej ralat menunjukkan bahawa pemacu JDBC (com.mysql.jdbc.Driver) tidak didaftarkan oleh aplikasi web. Seperti yang dinyatakan dalam mesej ralat, Tomcat akan menyahdaftar pemacu secara paksa untuk mengelakkan kebocoran memori.
Untuk mengelakkan isu ini, disyorkan untuk mengalihkan penyambung/pemacu MySQL JDBC ke folder tomcat/lib dan bukannya memasukkan ia dalam PERANG. Ini memastikan bahawa penyambung/pemacu dimuatkan sekali sahaja oleh pemuat kelas Tomcat, mengelakkan berbilang instantiasi dan memastikan pembersihan yang betul semasa penutupan.
Ralat Benang Pemasa Pembatalan Penyata MySQL
Benang "Pemasa Pembatalan Penyata MySQL" dicipta oleh pemacu JDBC untuk membatalkan penyata tertunggak apabila sambungan ditutup. Jika urutan ini tidak dihentikan dengan betul, ia boleh menyebabkan kebocoran memori.
Untuk menyelesaikan isu ini, pastikan sambungan JDBC ditutup dengan betul sebelum aplikasi web dihentikan. Ini boleh dicapai dengan menggunakan blok akhirnya atau dengan menggunakan pernyataan cuba-dengan-sumber.
Pertimbangan Tambahan
Atas ialah kandungan terperinci Mengapa Tomcat Mengalami Kebocoran Memori dengan Pemacu JDBC dan Pemasa Pembatalan Penyata MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!