Pertanyaan Jumlah maksimum memori yang dapat ditangani oleh satu proses di Windows


Batas Memori untuk Rilis Windows jawaban berapa jumlah maksimum memori yang dapat ditangani oleh setiap proses di Windows:

Pada Windows versi 32-bit, proses tunggal dapat memetakan dan mengatasi no   lebih dari 3GB memori virtual pada waktunya. Dalam versi 64-bit dari   Windows, proses 32-bit dapat memetakan dan alamat tidak lebih dari 4GB   memori virtual pada suatu waktu.

Untuk proses 64-bit, jumlahnya sulit dihitung seperti di sana   banyak batas tumpang tindih yang bisa berlaku tergantung pada semua   macam faktor. Biasanya sekitar 7TB.

Pertanyaan saya: Bagaimana cara memverifikasi nilai seperti "3GB", "4GB" dll?

Bisakah kita menulis kode C # untuk membuktikannya? Apakah ada metode untuk itu?

Terima kasih.


26
2017-08-09 20:39


asal


Jawaban:


Mark Russinovich menerbitkan seri multipart pada sumber daya memori windows benar-benar mencakup ini dengan sangat baik. Anda dapat menemukannya di sini: http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Dia menutupi alasan mengapa batas adalah apa yang mereka, serta tes. Kode untuk tes mengambang di dalam tabung di suatu tempat.

Jika Anda ingin tahu tentang sumber daya memori dan masalah yang dapat Anda lihat dari bocornya berbagai jenis, itu adalah bacaan yang baik.

Tapi, secara singkat, 32 bit pada OS 32 bit: 2 GB, kecuali diatur ke ruang alamat besar yang sadar, dalam hal ini 3 GB. 32 bit pada OS 64 bit: 2 GB, kecuali disetel ke ruang alamat besar yang diketahui, dalam hal ini 4 GB.

Proses 64 bit: 2 GB, kecuali disetel ke ruang alamat besar yang diwaspadai, dalam hal ini dapat menangani hingga 8 TB, kecuali jika di-host pada sistem berbasis Itanium Intel yang terbatas hingga 7 TB.

Microsoft menyatakan berbagai batasan (berdasarkan rasa dan jenis) di: http://msdn.microsoft.com/en-us/library/aa366778.aspx


28
2017-08-09 21:27



Anda dapat menulis semacam lingkaran dalam aplikasi konsol untuk menguji ini.

Mungkin membuat string yang tepat 1MB dan loop melalui proses penggabungan untuk meningkatkan ukurannya sampai Anda mendapatkan ... Stack Overflow error.

Pada setiap iterasi Tuliskan ukuran, atau jumlah iterasi.

EDIT

Saya ingin menambahkan, karena STRING tidak dapat diubah (meskipun secara teknis menjadi tipe referensi) untuk menggunakan OBJECT

Edit Dua

Trisped menunjukkan bahwa string kotak di Object masih tidak dapat diubah.

Membuat Array byte [1024] harus melakukan trik.


1
2017-08-09 20:45