Vlákno názorů k článku Monitorování procesů a správa paměti v JDK6 a JDK7 (1) od Polish - Cekal jsem trosku neco jineho, ale clanek paradni...

  • Článek je starý, nové názory již nelze přidávat.
  • 6. 1. 2011 10:35

    Polish (neregistrovaný)

    Cekal jsem trosku neco jineho, ale clanek paradni a tesim se na dalsi dil. Cekal jsem tipy a triky s jconsoli nebo podobnymi nastroji, hledani slabych mist v aplikaci apod. Srovnani vykonu pri pouziti Large Pages (v linuxu Hugepages). Srovnani vykonu ve virtualizovanem/ne­virtualizovanem prostredi. Dik za clanek

  • 6. 1. 2011 10:52

    Pavel Tišnovský
    Zlatý podporovatel

    K tomu se jeste dostaneme - myslim ted predevsim nastaveni heapu, povoleni large pages, volba GC, poctu vlaken alokovanych GC atd.

    Me se napriklad v jedne benchmarkove aplikaci osvedcily tyto volby (pro osmijadro):

    -XX:+UseParalle­lOldGC -XX:ParallelGCThre­ads=8 -XX:+AggressiveOpts

    Ale pro jinou benchmarkovou aplikaci na tom samem stroji jsou tyto volby naopak horsi nez defaultni nastaveni ;-) A pro GUI aplikace, kde by nemelo byt patrne zpozdeni kvuli GC jsem zase zvolil G1, i kdyz ho Oracle prozatim povazuje za experimentalni.

  • 6. 1. 2011 14:09

    donnie (neregistrovaný)

    Diky za clanek, tesim se na dalsi pokracovani.

    Kdyz si ctu doporuceni v ruznych diskuzich ohledne System.gc()
    tak se casto doctu ze System.gc() je evil a kdo ho pouziva tak
    jenom proto protoze nekde udelal neco blbe co gc zabranuje
    byt "dostatcne optimalni", hard core reseni je zakazat System.gc()
    uplne.

    Nicmene, co me prekvapilo kdysi bylo ze System.gc() tedy explictini
    vyvoalni "full gc", ve skutecnosti nikde negarantuje smazani skutecne vsech
    nepotrebnych objektu tj. ze kdyz mam hodne "mrtvych obejktu" na heape
    a spustim v iteraci (naprikald 10 cyklu) System.gc() tak dosahnu toho
    ze mi gc uvolni vic pameti (nez kdybych zavolal System.gc() jednou).
    Coz je docela zajiamvy protoze to oznaceni "full gc" mi evokuje ze se
    proleze cela struktura (at uz je to cokoliv) uz pri prvnim zavolani
    System.gc().

    Jinak to tveakovani parametru a vyber ruznych gc je taky sranda. Ja jsem
    naprikald vyresil OutofMemory pouze tim ze jsem nastavil vetsi velikost
    "eden generation" oblasti u doufalt gc collectoru, coz byl pro onu tridu
    poctace "jenoduchy" MarkSweepCompact gc.

  • 6. 1. 2011 14:21

    KarelI

    Myslim, ze "full gc" neni full prave proto, ze se nasla spousta matlalu, kteri to z ruznych obskurnich duvodu volaji vsude mozne a pak je nasledkem jen to, ze se aplikace zpomali, protoze full gc trva dlouho. Tak vetsinou dostanou jen procisteni edenu a jsou spokojeni a pritom to program tolik nezpomali. Takovy ten kompromis kdyz se stretnou idealy s praxi.