Maison  >  Questions et réponses  >  le corps du texte

java - 正常的应用多久一次Full GC?

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

天蓬老师天蓬老师2744 Il y a quelques jours1794

répondre à tous(3)je répondrai

  • PHPz

    PHPz2017-04-18 10:50:22

    Bien qu'il n'ait pas été optimisé. Cependant, je pense que cela doit être pris en charge en fonction des besoins réels de l'entreprise et de ses capacités commerciales pour l'optimiser.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:50:22

    Regardez la taille du tas et le qps de l'application Java, mais au départ, en regardant le gc complet toutes les 20 minutes, cela ne semble pas normal

    répondre
    0
  • PHPz

    PHPz2017-04-18 10:50:22

    L'optimisation JVM peut être discutée pendant des heures. Ici, je vais vous donner quelques avis simples sans entrer dans les détails systématiques.

    Premièrement : votre problème est que le GC complet est fréquent. Vérifiez si la mémoire totale et les paramètres de l'ancienne génération sont trop petits.
    Cela dépend principalement des paramètres -Xmx et -Xmn. S'il est trop petit, gc se produira inévitablement fréquemment.

    Deuxième : Ajoutez les paramètres suivants
    -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
    Vérifiez à chaque fois gc, combien d'espace reste dans l'ancienne génération, d'une manière générale, l'espace dans l'ancienne génération, le régler à 2 à 2,5 fois la mémoire après gc est une valeur plus raisonnable.
    En même temps, vous pouvez voir à travers ce journal si un grand nombre d'objets entrent dans l'ancienne génération sans suffisamment de gc dans la nouvelle génération. Si des objets pouvant être recyclés via la nouvelle génération entrent dans l'ancienne génération, des gc complets se produiront inévitablement fréquemment

    Troisième : motif de vidage de la mémoire du code
    jmap -dump:live,format=b,file=xx.bin [pid]
    Puis passez MAT (http://www.eclipse .org/mat/) pour voir quelle grande mémoire n'a pas été libérée

    répondre
    0
  • Annulerrépondre