Merhaba, çalıştığımız projede Tomcat 7 server kullanıyoruz. Heap size ı 6gb'a kadar çıkarmamız gerekebliyor. Eclipse üstünden VM arguments kısmından bu işlemi yapıp işlemlerimiz gerçekleştirebiliyoruz.Heap size kullanımını Java VisualVM üstüdnen takip ediyoruz.Fakat şöyle bir problemimiz var. Heap size ı sonuna kadar kullandığımız işlemlerimiz bittiğinde Used Heap size azalıyor fakat Tomcatin bizim için açmış olduğu Heap size 6gb larda kalıyor ki buda kullandığımız local makineleri çok yoruyor ve üst üste işlemlerde sıkıntı yaşıyoruz.Soruma gelince işlemlerimiz bittiğinde JVM nin sağladığı Heap size ı used heap size seviyelerine yada default düşük değerlere çekmek mümkün müdür.Bu arada thread kullanımlarımızda Garbage collection da yapıyoruz.Zaten bu sayede used heap size ı düşürüyoruz.Teşekkürler.

Güncelleme

(Bu arada Serverımızın Runtime Environment ı JRE 1.8 olduğunu da belirtmek isterim.)

alt text

alt text

İlk resimde bizdeki durum ikincisinde ise istediğimiz allocation örneği.

soruldu: 29 May '14, 12:40

mft's gravatar image

mft
26138
cevap kabul oranı: 33%

değiştirildi: 30 May '14, 01:46

Heap size izleme ekranında max alan gösterilir ama azalıyor olması lazım . Ben öyle bir skıntı yaşamıyorum 16 gb lık bi alan verilmiş durumda şimdi . işlemler bittikten sonra kendinin azaltması lazım.Ama panelde max gösterir herzaman

(29 May '14, 12:53) Mehmet KILIC Mehmet%20KILIC's gravatar image

Panelde turuncu ile gösterilen işlem bittikten sonra hiç azalmıyor.Mavi azalıyor.Task managerdan baktığımda yine memory kullanımı diğer işlemlerle beraber neredeyse %100 oluyor.

(29 May '14, 13:02) mft mft's gravatar image

Burda hicbir sorun yok. Gc normal calisiyor.

(30 May '14, 11:58) özcanacar ♦♦ %C3%B6zcanacar's gravatar image

Aşağıdaki linkteki çözüm sorunumuzu giderdi. http://stackoverflow.com/questions/3776041/eclipse-release-heap-back-to-system

Yeni VM arguments şu şekilde uyguladık. -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 -Xms256m -Xmx4096m

permanent link

cevaplandı: 31 May '14, 04:56

mft's gravatar image

mft
26138
cevap kabul oranı: 33%

JVM belli bir büyüklükte baslatildiktan sonra implementasyonuna göre ya hemen tüm verilen alani aloke eder ya da yavas yavas hafiza alanini tanimli üst sinira ulasacak sekilde yükseltir. JVM hicbir zaman bir kere aldigi hafiza alanini geriye vermez. Bunun icin JVM'i durdurmaniz gerekir.

Sizin uygulamanizda bir memory leak olsa gerek. Normalda garbage collector belli araliklarla temizlik yapar ve eden ya da old generation heap kullanim orani düser. Eger düsmüyorsa, uygulama agzi, agzina dolu kaliyorsa, memory leak vardir demektir ya da kullandiginiz hafiza alani yeterli degildir.

permanent link

cevaplandı: 29 May '14, 13:46

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

Teşekkürler. Söyledğim gibi used heap size düşüyor fakat JVM nin ayarladığı Heap size yüksek devam ediyor.Memory leak ile ilgili kontrollerimizi zaten yapıyoruz fakat bir şey bulamadık. JVM vermiyorsa geri yapacakta pek birşey yok şu durumda ozaman.

(30 May '14, 01:37) mft mft's gravatar image

(Bu arada Serverımızın Runtime Environment ı JRE 1.8 olduğunu da belirtmek isterim.)

(30 May '14, 01:40) mft mft's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,076
×2

Soruldu: 29 May '14, 12:40

Görüntüleme: 670 kez

Son güncelleme: 31 May '14, 06:59

powered by BitNami OSQA