2012-12-17 15 views
5

2 GB'ime 4 Gb RAM eklediğim için Windows 7'den (32 bit) Windows 7'ye (64 bit) geçtim. Ve şimdi Eclipse Juno EE çalıştırıyorum. Windows Görev Yöneticisi'nde bu işlemin javaw.exe ~ 380 Mb RAM olduğunu görüyorum, 32-bit işletim sistemini kullanırken bunu daha önce görmedim. Herhangi bir projeyi öğle yemeği yemeye bile çalışmadım.Windows 64'te javaw.exe işlemi daha fazla bellek tüketiyor mu?

public static void main(String[] args) { 
    Runtime runtime = Runtime.getRuntime(); 
    System.out.println(runtime.maxMemory()); 
} 

Benim JVM is allocated 1 338 507 264 bytes için olduğunu göstermektedir: Bu kodu yazdım.

Bu, projeleri çalıştıracağım zaman, bu işlem 1,3 Gb Ram'a kadar tüketebilir?

Gelecekte bununla ilgili herhangi bir sorunum olacak mı?

+0

6GB'lık bir makinede, 380MB endişelenecek bir şey değildir. Sonuçta RAM'in kullanılmadığı bir nokta yok. –

cevap

6

64-bit sürümü, -server JVM'yi kullanır ve daha yüksek varsayılan maksimum yığın boyutuna sahiptir. Windows 32-bit sürümü varsayılan olarak -client JVM kullanır ve daha küçük makinelerde çalışmak üzere tasarlandığından varsayılan olarak daha az kaynak kullanır, sonuç olarak uzun çalışma programlarında daha yavaş olma eğilimi gösterir (istemci JVM'nin kısa çalışma için daha hızlı yükleri vardır) uygulamacıklardır programları)

maksimum yığın boyutunu ayarlamak Eğer Java 6 veya Java 7'nin son sürümünü

+0

Doğrudan op's issue ile ilgili değil - Ben aynı programın 64 bit JVM ile daha fazla bellek kullandığı bir yerde okumuştum sanıyordum (sanırım% 50 ya da öylesine idi). – assylias

+1

Java 5 ve erken Java 6, CompressedOops (32-bit referanslar) kullanmamış ve hafıza tüketiminde yaklaşık% 50 artışa neden olmuştur.Bu sebepten dolayı 32 GB iyi bir yığın boyutu değil (Sıkıştırılmış Oops'i kaybettiğinizde) ve daha kullanışlı bellek almak için 48 GB'a çıkmanız gerekiyor. Hala bir artış var ama% 10'a yakın olduğunu ve fark edeceğiniz bir şey olmadığını sanıyorum. –

+0

Ve yığın boyutunu nasıl ayarlayabilirim? –

2

Runtime.maxMemory() varsa, bunlar belleğin aynı miktarda kullanmalıdır:

Java sanal makinesinin kullanabileceği maksimum bellek miktarını döndürür Kullanmaya çalışacağım.

Bu bir üst sınırdır. Bu, JVM'nin bu bellek aralığını önceden ayırdığı anlamına gelmez. Nesneleri oluştururken ve bunları etrafında sakladığınızda, yapılandırabileceğiniz maksimum yığın boyutuna kadar, işleminizin bellek kullanımı artacaktır. Windows Görev Yöneticisi'nde

O süreç javaw.exe ~ 380 Mb RAM yiyor bakın

bellek kullanımı gereken birçok yön vardır: adres alanı, sanal vb RAM, fiziksel RAM, bağlı var Görev Yöneticisi'nde hangi sütunda olduğunu görüyorsanız, orada gördüğünüz sayının birçok farklı anlamı olabilir.

Ben

Genelde

, 64-bit kod eşdeğer 32 bitlik kod daha fazla bellek gerektiren doğrudur Windows 7 (64 bit) Windows 7 (32-bit) ya geçilir. Bir şey için, işaretçiler daha geniştir ve bu nedenle daha fazla yer kaplar. Bu, JVM'ye başka herhangi bir işleme yaptığı gibi uygulanır. Bununla birlikte, JVM, etkinin azaltılması için bazı adımlar atmaktadır. Böyle bir ölçüm CompressedOops'dur.

+0

Ben cadı sütunu bilmiyorum, çünkü ben Ukrayna'dan ve Rusça sürümü var. Tam anlamıyla "Bellek" olarak tercüme edilir. –

İlgili konular