java - 正常的应用多久一次Full GC?
天蓬老师
天蓬老师 2017-04-18 10:48:22
0
3
1857

我查看我们服务器的状态,半个月发生了900+次full gc,大约20分钟一次full gc,这是正常的吗?或者说优化到多久一次会比较合理?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(3)
PHPzhong

Walaupun ia belum dioptimumkan. Walau bagaimanapun, saya merasakan ini perlu disokong berdasarkan keperluan perniagaan sebenar dan keupayaan perniagaan untuk mengoptimumkannya.

大家讲道理

Lihat saiz timbunan dan qps aplikasi Java, tetapi pada mulanya melihat gc penuh setiap 20 minit, nampaknya tidak normal

PHPzhong

Pengoptimuman JVM boleh dibincangkan selama berjam-jam.

Pertama: Masalah anda ialah gc penuh adalah kerap. Periksa sama ada jumlah memori dan tetapan generasi lama terlalu kecil.
Ia bergantung terutamanya pada parameter -Xmx dan -Xmn Jika terlalu kecil, gc pasti akan kerap berlaku.

Kedua: Tambahkan parameter berikut
-verbose.gc -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX +PrintGCApplicationStoppedTime -XX:+PrintTenuringDistribution -Xloggc:/data/log/xxx/xxx-gc.log -XX:+PrintGCDetails
Semak setiap kali gc, berapa banyak ruang yang tinggal dalam generasi lama, secara amnya, ruang dalam generasi lama Menetapkannya kepada 2-2.5 kali memori selepas gc adalah nilai yang lebih munasabah.
Pada masa yang sama, anda boleh melihat melalui log ini sama ada sejumlah besar objek memasuki generasi lama tanpa gc yang mencukupi dalam generasi baharu. Jika objek yang boleh dikitar semula melalui generasi baharu memasuki generasi lama, gc penuh pasti akan kerap berlaku

Ketiga: Memori pembuangan sebab kod
jmap -dump:live,format=b,file=xx.bin [pid]
Kemudian lulus MAT (http://www. eclipse .org/mat/) untuk melihat memori besar yang belum dikeluarkan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan