Saya telah membaca banyak tentang biaya komit dan masih ada sesuatu yang menggangguku. Di mac saya (dan mungkin juga di linux), apa hubungan antara ukuran VM dan dan memori Commit (windows). Saya pikir saya benar-benar mengerti komit setelah beberapa pengujian, tetapi di windows sepertinya tidak ada jumlah memori virtual yang pernah melebihi ruang swap + ram. DI OSX (dan linux) ukuran VM tampaknya hampir melebihi ukuran harddisk saya! Saya menduga itu termasuk memori bersama lebih dari sekali, atau itu termasuk dialokasikan tetapi tidak tersentuh atau ditulis ke memori. Katakanlah saya membuat malloc (2gb) (jelas tidak seperti ini), berbeda dari benar-benar menulis ke seluruh 2gb.
Jadi ini membawa saya ke pertanyaan saya, apa sebenarnya ukuran ukuran VM di OSX dan linux. Apakah ini total dari semua panggilan malloc misalnya (atau total VM yang mungkin misalnya, termasuk praktis 4gb untuk setiap proses pada mesin 64 bit), dan bagaimana hal ini dibandingkan dengan Commit (batas, puncak, penggunaan) pada windows? Apakah windows tidak membiarkan Anda mengalokasikan lebih dari batas swap + ram Anda, seperti yang dilakukan OSX dan linux dan mengapa?
Pada gambar di bawah ini Anda dapat melihat bahwa di windows swap + ram sama dengan commit (2gb). Di OSX ukuran VM saya lebih dari 200GB pada harddrive sekitar 200GB.
sumber
malloc
memori ed reguler , jika dimodifikasi, perlu ditulis ke file halaman sebelum halaman dapat diusir dari memori fisik.