Helló mindenkinek – itt a fifth bejegyzés a Quarkus sorozatunkból! (Egyébként nézd meg a webináriumunkat . Megmutatjuk, hogyan lehet „nulláról“ indítani vagy kész megoldásokat átvinni.)

A a Quarkus által támogatott technológiák (CDI és Servlet 3) segítségével modernizált Java-alkalmazásokat vizsgáltunk meg a helloworld program példáján, amely a repóban található . Ma folytatjuk a modernizálás témáját, és megvitatjuk a memóriafogyasztás kérdését.
A teljesítménymérés alapvető fontosságú szinte minden modernizálásban, és a memóriahasználatról szóló jelentések a teljesítményértékelési folyamat fontos részét képezik. Ma azokat a megfelelő mérési eszközöket fogjuk megvizsgálni, amelyek segítségével mennyiségileg értékelhetjük a Java-alkalmazások modernizálásának eredményeit.
A memóriahasználat méréséről részleteket találhatunk a Quarkus útmutatójában, amelynek címe
A következőkben bemutatjuk, hogyan hasonlíthatjuk össze a memóriahasználati adatokat három különböző alkalmazástípus esetében (JBoss EAP, JAR-csomag és végrehajtható fájl), a pmap és ps eszközökkel gyűjtve ezeket az adatokat Linux alatt.
JBoss EAP
Elindítjuk a JBoss EAP alkalmazás példányát (lásd a "Helloworld telepítése" részt a ) és ezután megnézzük a folyamatazonosítóját (PID) a következő parancs segítségével:
$ pgrep -lf jboss
7268 java
Megjegyzés. Az -a opció lehetővé teszi a teljes parancssor megjelenítését (azaz: $ pgrep -af jboss).
Most használjuk a 7268 PID-t a ps és pmap parancsokban.
Így:
$ ps -o pid,rss,command -p 7268
PID RSS COMMAND
7268 665348 java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferI
És így néz ki:
$ pmap -x 7268
7268: java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standa
Address Kbytes RSS Dirty Mode Mapping
00000000ae800000 1348608 435704 435704 rw--- [ anon ]
0000000100d00000 1035264 0 0 ----- [ anon ]
000055e4d2c2f000 4 4 0 r---- java
000055e4d2c30000 4 4 0 r-x-- java
000055e4d2c31000 4 0 0 r---- java
000055e4d2c32000 4 4 4 r---- java
000055e4d2c33000 4 4 4 rw--- java
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 3263224 672772 643024
Nézzük meg az RSS értékét, és látjuk, hogy a JBoss EAP körülbelül 650 MB memóriát használ.
JAR csomag
Futtatjuk a JAR alkalmazást (lásd a 'Helloworld JAR-ba csomagolásának indítása' részt) ):
$ java -jar ./target/helloworld--runner.jar
Újra megnézzük a PID-t a pgrep parancs segítségével (ezúttal a fent említett -a opciót használva):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld--runner.jar
Futtatjuk a ps-t és a pmap-t, hogy mérjük a memóriahasználatot, de most a 6408-as folyamathoz.
Így:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
És így néz ki:
$ pmap -x 6408
6408: java -jar ./target/helloworld-quarkus-runner.jar
Address Kbytes RSS Dirty Mode Mapping
00000005d3200000 337408 0 0 rw--- [ anon ]
00000005e7b80000 5046272 0 0 ----- [ anon ]
000000071bb80000 168448 57576 57576 rw--- [ anon ]
0000000726000000 2523136 0 0 ----- [ anon ]
00000007c0000000 2176 2088 2088 rw--- [ anon ]
00000007c0220000 1046400 0 0 ----- [ anon ]
00005645b85d6000 4 4 0 r---- java
00005645b85d7000 4 4 0 r-x-- java
00005645b85d8000 4 0 0 r---- java
00005645b85d9000 4 4 4 r---- java
00005645b85da000 4 4 4 rw--- java
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 12421844 133784 115692
Újra megnézzük az RSS-t, és látjuk, hogy a JAR csomag körülbelül 130 MB-ot fogyaszt.
Néhány fájl
Futtatjuk a natív binárist (lásd a 'Helloworld natív binárisának indítása' részt) ):
$ ./target/helloworld--runner
Újra megnézzük a PID-jét:
$ pgrep -af helloworld
6948 ./target/helloworld--runner
Majd használjuk a kapott folyamatazonosítót (6948) a ps és pmap parancsokban.
Így:
$ ps -o pid,rss,command -p 6948
PID RSS COMMAND
6948 19084 ./target/helloworld-quarkus-runner
És így:
$ pmap -x 6948
6948: ./target/helloworld-quarkus-runner
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 12 12 0 r---- helloworld-quarkus-runner
0000000000403000 10736 8368 0 r-x-- helloworld-quarkus-runner
0000000000e7f000 7812 6144 0 r---- helloworld-quarkus-runner
0000000001620000 2024 1448 308 rw--- helloworld-quarkus-runner
000000000181a000 4 4 4 r---- helloworld-quarkus-runner
000000000181b000 16 16 12 rw--- helloworld-quarkus-runner
0000000001e10000 1740 156 156 rw--- [ anon ]
[...]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------- ------- -------
total kB 1456800 20592 2684
Nézzük meg az RSS-t, és látjuk, hogy a futtatható fájl körülbelül 20 MB memóriát foglal el.
Összehasonlítjuk a memóriahasználatot
Tehát a következő számadatokat kaptuk a memóriahasználatról:
- JBoss EAP – 650 MB.
- JAR csomag – 130 MB.
- Futtatható fájl – 20 MB.
Nyilvánvaló, hogy a futtatható fájl sokkal kevesebb memóriát használ.
Összegzés a 4. és 5. bejegyzéshez
Ebben és az előző bejegyzésben a Quarkus által támogatott technológiák (CDI és Servlet 3) használatával foglalkoztunk a Java-alkalmazások korszerűsítésének kérdésével, valamint a különböző fejlesztési, építési és futtatási módszerekkel. Megmutattuk, hogyan lehet adatokat gyűjteni a memóriahasználatról a korszerűsítés eredményeinek értékeléséhez. Ezek a cikkek segítenek megérteni, hogyan működik a Quarkus és milyen előnyöket nyújt – függetlenül attól, hogy a példáink között szereplő egyszerű helloworld programról vagy a valós életből származó sokkal bonyolultabb alkalmazásokról van szó.
Két hét múlva visszatérünk a Quarkus záróbejegyzésével – találkozunk!
Záróbejegyzésünkben megmutatjuk, hogyan lehet egyesíteni az AMQ Online-t és a Quarkus-t egy modern OpenShift alapú üzenetküldő rendszer létrehozásához, két új üzenetfeldolgozási technológia felhasználásával. Olvassa el a .
Forrás: habr.com
