Java sanal bellek rezervasyonu neden bu kadar yüksek? Hata?


6

Mac Os 10.5.8 Sunucumda Java, 16,777,216TB (yaklaşık olarak tüm insan bilgisinin toplamının üçte biri kadarını ayırmaktadır) -eek! Bunun gerçekten sakıncalı olmadığını biliyorum (öyleyse oldukça şaşırtıcı olurdu!); Endişelenecek bir şey var mı (yani bir böcek / aksaklık) ve eğer değilse, bu ne anlama geliyor?

görüntü tanımını buraya girin


3
Harika analoji! Çok fazla terabayt var.
bmike

Yanıtlar:


1

16 Mebi TebiBytes (16 ExbiBytes) 2 ^ 64 Bayttır. Makineniz 64 bit adresleme kullanıyor olmalı ve JVM'niz (Java Sanal Makinesi) muhtemelen kendi sanal adres alanına 0xffffffffffffffff adresini yazacak bir şeyler yazdı (muhtemelen yanlışlıkla 0x00000000000000000000'den küçük bir adrese yazarak) Mac OS X'e neden oldu Çekirdeğin sanal bellek alt sistemi, bu işlemin tüm sanal adres alanını kullandığını düşünüyor.

Endişelenme, sanal bellek seyrek . Yani, eşlenen her adres için, yalnızca işleminizin gerçekten yazdığı bellek sayfaları için bellek sayfaları (veya diskte yer değiştirmez) tahsis etmez . Ancak , sanal bellek takas dosyalarınızın bulunduğu /ya da /var/vm/bulunduğu bir yere yerleştirilmiş 16+ ExbiByte RAID'iniz olmadıkça, bu zaten çok açık . :-)

Bir işlemi görmek, tüm sanal 64 bit adres alanının eşlenmesine neden olur; gariptir, ancak herhangi bir soruna neden olmamalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.