Terdapat pembersih dalam DirectByteBuffer Apabila mengitar semula, kaedah clean() pembersih ini dipanggil GC akan menggunakan pembersih ini untuk mengitar semula, walaupun ia tidak dikitar semula ke dalam timbunan Java
.
Pelaksanaan peruntukan dan kitar semula adalah untuk memanggil unsafe's allocateMemory dan freeMemory, yang sebenarnya adalah sistem memanggil malloc dan percuma
Jika anda perlu mengambil inisiatif untuk membersihkan, anda perlu menggunakan kaedah hack Anda boleh merujuk kepada Java Apabila semua strim ditutup, adakah ralat akan dilaporkan semasa memadam fail pada hard cakera? Jawapan saya
Jika ia adalah pembersihan sistem, apabila ia mendapati bahawa memori luar timbunan tidak mencukupi, ia akan memanggil System.gc() untuk membersihkan memori luar timbunan Anda boleh menambah -XX:+DisableExplicitGC untuk melimpah keluar -timbunan ingatan
Terdapat pembersih dalam DirectByteBuffer Apabila mengitar semula, kaedah clean() pembersih ini dipanggil GC akan menggunakan pembersih ini untuk mengitar semula, walaupun ia tidak dikitar semula ke dalam timbunan Java
.Pelaksanaan peruntukan dan kitar semula adalah untuk memanggil unsafe's allocateMemory dan freeMemory, yang sebenarnya adalah sistem memanggil malloc dan percuma
Jika anda perlu mengambil inisiatif untuk membersihkan, anda perlu menggunakan kaedah
hack
Anda boleh merujuk kepada Java Apabila semua strim ditutup, adakah ralat akan dilaporkan semasa memadam fail pada hard cakera? Jawapan sayaJika ia adalah pembersihan sistem, apabila ia mendapati bahawa memori luar timbunan tidak mencukupi, ia akan memanggil
System.gc()
untuk membersihkan memori luar timbunan Anda boleh menambah-XX:+DisableExplicitGC
untuk melimpah keluar -timbunan ingatan