Java jako linuxová služba

KapitánRUM

Java jako linuxová služba
« kdy: 12. 09. 2012, 00:41:08 »
Ahoj,

změnilo se něco v možnosti spustit Javový kód jako démona na Linuxu nebo to jde pořád stejně blbě a "Nazdar vole" sedící v paměti sežere ~50MB operačky?

Díky.
« Poslední změna: 12. 09. 2012, 07:07:25 od Petr Krčmář »


Re:Java jako Linuxová služba
« Odpověď #1 kdy: 12. 09. 2012, 06:43:12 »
Mne zožerie cron napísaný v Jave aj 200MB. Je to dosť veľká aplikácia, ktorá spracováva väčšie množstvo údajov, takže to chápem. Pri 16GB RAM v tom nevidím problém a na notebooku to nepúšťam.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Java jako linuxová služba
« Odpověď #2 kdy: 12. 09. 2012, 07:46:47 »
Žádná změna, jde to stejně blbě jako minulý týden, úplně dlabou na vývoj, Java ustala na mrtvém bodě ... :-)

Teď vážně: za poslední roky se AFAIK nic moc nezměnilo. Osobně nevidím moc důvod psát démona v Javě.

"Hello world" (Swing) mi bral na linuxu operační paměti kolem 20-25MB, což nebylo o moc jiné než Python+Qt nebo Mono+Win.Forms. Na Windows to bude podobné. Na druhou stranu Hello World program sám o sobě není nijak vypovídající.

Pokud chceš něco slušného, multiplatformního, jednoduchého, v čem Hello World nezabírá moc paměti, tak se podívej třeba na Ultimate++ http://ultimatepp.org/ .

Ivan

Re:Java jako linuxová služba
« Odpověď #3 kdy: 12. 09. 2012, 09:08:38 »
změnilo se něco v možnosti spustit Javový kód jako démona na Linuxu nebo to jde pořád stejně blbě a "Nazdar vole" sedící v paměti sežere ~50MB operačky?
Nevim jestli to neni jen pokus o flame, ale presto odpovim. JVM je virtualni masina, ktera si sama pro sebe uzurpuje nektere vlastnosti kernelu. Jako treba memory management. Ciste teoreticky by nikdy nemela sezrat vic pameti nez ji urcis pomoci parametru -Xmx(heap size).

Pokud spoustis aplikaci v Jave, tak musis dopredu udekat sizing a musis rozhodnout kolik pameti (maximalne) muze aplikace pouzit.
Kdyz se nad tim zamyslis, tak to neni zase uplne spatna vlastnost. Treba database jako Informix, Oracle anebo i Posgress funguji podobne.


KapitánRUM

Re:Java jako linuxová služba
« Odpověď #4 kdy: 12. 09. 2012, 10:24:53 »
Díky, přesně tohle jsem měl na mysli.


eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Java jako linuxová služba
« Odpověď #5 kdy: 12. 09. 2012, 10:43:28 »
Ciste teoreticky by nikdy nemela sezrat vic pameti nez ji urcis pomoci parametru -Xmx(heap size).

Jenom doplním info - vždycky "sežere" trochu víc - tohle je jen omezení velikosti haldy. Kromě haldy potřebuješ ještě nějaký jiný věci (např. zásobník přes který se předávají parametry funkce - JVM je klasická zásobníková mašina (tím "klasická" myslím to samé co i386, ne AK-47) ... :) ), ale ten "overhead" není moc velký)

Pavel Tisnovsky

Re:Java jako linuxová služba
« Odpověď #6 kdy: 12. 09. 2012, 12:41:28 »
Žádná změna, jde to stejně blbě jako minulý týden, úplně dlabou na vývoj, Java ustala na mrtvém bodě ... :-)

Teď vážně: za poslední roky se AFAIK nic moc nezměnilo. Osobně nevidím moc důvod psát démona v Javě.

"Hello world" (Swing) mi bral na linuxu operační paměti kolem 20-25MB, což nebylo o moc jiné než Python+Qt nebo Mono+Win.Forms. Na Windows to bude podobné. Na druhou stranu Hello World program sám o sobě není nijak vypovídající.

Pokud chceš něco slušného, multiplatformního, jednoduchého, v čem Hello World nezabírá moc paměti, tak se podívej třeba na Ultimate++ http://ultimatepp.org/ .

Nojo, projekt Jigsaw, ktery toto mel docela elegantne resit, byl zase odsunuty, takze si netroufam predikovat, kdy v JDK bude (devitka?). V kazdem pripade, pokud by ten demon nemel byt nejak narocny na vypocetni vykon, tak se da s pameti hrat, viz zminene -Xmx, potom -Xms, dale -Xss pro stack size (ale ten je maly, nejakych 1/2 mega) a hlavne compressed oops na 64bitovych masinach - to muze dost pomoci napriklad tehdy, pokud projekt pouziva kosatou strukturu objektu s mnozstvim referenci.

A ja bych se nebal jit jeste dal - namisto Hotspotu zkusit nahodit JamVM, zkuste uvidite (neda se rict obecne, KDY je JamVM lepsi reseni, ale na nejakej bazmek, co sem tam neco prijme pres socket to je lepsi nez mlaticka typu HotSpot).

Tomas

Re:Java jako linuxová služba
« Odpověď #7 kdy: 12. 09. 2012, 14:23:06 »
Ciste teoreticky by nikdy nemela sezrat vic pameti nez ji urcis pomoci parametru -Xmx(heap size).

Jenom doplním info - vždycky "sežere" trochu víc - tohle je jen omezení velikosti haldy. Kromě haldy potřebuješ ještě nějaký jiný věci (např. zásobník přes který se předávají parametry funkce - JVM je klasická zásobníková mašina (tím "klasická" myslím to samé co i386, ne AK-47) ... :) ), ale ten "overhead" není moc velký)

Jen doplnim ze krom tohoto "maleho" overhead-u vetsina respondentu zapomina, že PermGen se nepocita do HeapSize(Xmx Xms).
PermGen se pouziva laicky řečeno "na prototypy a tridy"(ne objekty samotne).

Ještě doplním, že taky může být rozdíl na/v čem spouštíte a co za aplikaci.
Situace, kdy jdk oracle aplikace s heap <1,2G + =<1/4 overhead ci mene a proste tohle neprekroci. (enterprise SW)
Situace, kdy na openjdk heap 300M + =<5/4 overhead.

KapitánRUM

Re:Java jako linuxová služba
« Odpověď #8 kdy: 12. 09. 2012, 16:16:42 »
Díky, přesně tohle jsem měl na mysli.

Tak tohle jsem fakt nepsal  ;D
Přesto díky.

Ivan

Re:Java jako linuxová služba
« Odpověď #9 kdy: 13. 09. 2012, 09:28:04 »
Nojo, projekt Jigsaw, ktery toto mel docela elegantne resit, byl zase odsunuty, takze si netroufam predikovat, kdy v JDK bude (devitka?). V kazdem pripade, pokud by ten demon nemel byt nejak narocny na vypocetni vykon, tak se da s pameti hrat, viz zminene -Xmx, potom -Xms, dale -Xss pro stack size (ale ten je maly, nejakych 1/2 mega) a hlavne compressed oops na 64bitovych masinach - to muze dost pomoci napriklad tehdy, pokud projekt pouziva kosatou strukturu objektu s mnozstvim referenci.

Co presne ten Jigsaw dela? Umi to menit Xm* parametry za behu? Tohle je vec ktera me trapi. Mame HW ktery podporuje hotplug RAM a hoplug CPU. Dokonce i OS to podporuje, ale stejne je to vsechno na prd, kdyz musime nakonec restartovat aplikaci.

Pavel Tisnovsky

Re:Java jako linuxová služba
« Odpověď #10 kdy: 13. 09. 2012, 14:29:01 »
Nojo, projekt Jigsaw, ktery toto mel docela elegantne resit, byl zase odsunuty, takze si netroufam predikovat, kdy v JDK bude (devitka?). V kazdem pripade, pokud by ten demon nemel byt nejak narocny na vypocetni vykon, tak se da s pameti hrat, viz zminene -Xmx, potom -Xms, dale -Xss pro stack size (ale ten je maly, nejakych 1/2 mega) a hlavne compressed oops na 64bitovych masinach - to muze dost pomoci napriklad tehdy, pokud projekt pouziva kosatou strukturu objektu s mnozstvim referenci.

Co presne ten Jigsaw dela? Umi to menit Xm* parametry za behu? Tohle je vec ktera me trapi. Mame HW ktery podporuje hotplug RAM a hoplug CPU. Dokonce i OS to podporuje, ale stejne je to vsechno na prd, kdyz musime nakonec restartovat aplikaci.

No v ramci projektu Jigsaw se mel mj. vyresit jeden dost velky a leta se tahnouci problem - modularita samotneho JRE (a JVM). V soucasnosti je JRE vlastne monoliticka vec, kde - zjednoduse receno - vsechno zavisi na vsem, takze napriklad pro nejakou aplikaci typu "Hello world" se pouziva JRE/JVM s moznosti prace s GUI (ATW/Swing), filesystemem, siti, security knihovnama, zvukem atd. atd.

Myslenkou bylo udelat v JRE poradek a nasledne tak zajistit moznost modularizace, kdy by se v ramci deskriptoru aplikace reklo, co ta aplikace vyzaduje. Pro GUI aplikaci by se tedy natahly i GUI knihovny, pro Applet by se NEtahaly veci okolo filesystemu a print systemu, jednoduchy daemon ci "Hello world" by si natahl jen java.io a nejaka jednoducha webovka by si taky vystacila jen s java.net a java.io - ted to hodne zjednodusuju, ale zaklad te myslenky je asi jasny.

Ad -Xm* - hmm mozna, ale skutecne jen mozna by to slo pres JXM, ale u nekterych parametru si myslim, ze bude umozneno jen cteni.