A digitális korszakban élés ugyanolyan áldás, mint frusztráció. Amikor a számítógépek és az alkalmazások zökkenőmentesen működnek, hajlamosaknak tartjuk őket. De amikor a számítógép lefagy, vagy egy alkalmazás lefagy egy laptop vagy mobil eszközön, a rossz teljesítmény növeli a stresszt.
Függetlenül attól, hogy fejlesztőként rendelkezik hozzáféréssel a forráskódhoz, vagy egyszerűen csak egy végfelhasználóként igyekszik felgyorsítani egy bosszantóan lassú Java alkalmazást, jó hírünk: van néhány lépés, amelyet megtehetsz a teljesítmény javítása érdekében.
A Java ugyanaz, mint a JavaScript?
Röviden: nem; A Java és a JavaScript két teljesen különféle technológia. Noha mindkettő objektum-orientált technológia, a Java olyan fejlesztési környezet, amelyben a programozók kódolhatják a rendszer memóriájában a helyi futtatásra tervezett alkalmazásokat..
A JavaScript-t viszont webes alkalmazások létrehozására fejlesztették ki, és gyakran egybeesik más webes technológiákkal, mint például a HTML és a CSS. Ma megvizsgáljuk a Java-ban írt, de a JavaScriptet nem tartalmazó alkalmazások teljesítményének javításának legjobb módjait.
A rossz alkalmazásteljesítmény okai
Az alulteljesítő alkalmazások okai hatalmasak, bár a fő okok egy kis maroknyi probléma. Természetesen az első két ok a rossz tervezés és a par par kódolás.
Noha az IDE és a kódszerkesztők kiemelik a tesztet és a tárgyakat, hogy azok jobban áttekinthetők legyenek, kommunikációs rés van a számítógépek és az emberek között. Hibákat fog hozni, amikor egy alkalmazást készít – ennek nincs lehetősége.
A számítógép néha nem érti a szándékát. Inkább csak az adott utasításokat hajtja végre. Az algoritmikus és kódolási hibák mellett az erőforrás-hiányosságok egy másik gyakori oka.
A helyi hardver, például a RAM és a CPU ciklusai befolyásolják az alkalmazás teljesítményét, csakúgy, mint más erőforrások, például a hálózati sávszélesség. Ezenkívül vegye figyelembe, hogy a helyi operációs rendszerek problémái gyakran befolyásolják az alkalmazás teljesítményét.
A Java alkalmazás teljesítményének javítása – 9 lépés
Mielőtt mélyebben bemélyednénk az egyes lépésekbe, magas szintű áttekintést akartunk adni Önnek a Java alkalmazások teljesítményének javításáról, az alábbiak szerint:
- Végezzen profilozást és terhelési teszteket – A Java alkalmazás profilozása segít felfedni a fájdalom pontjait és a szűk keresztmetszeteket.
- Tisztítsa meg a kódot és vizsgálja felül az algoritmusokat – a tiszta kódot könnyebb karbantartani, szerkeszteni, olvasni és finomítani; az algoritmusok felülvizsgálata csökkenti a tautológiai függvényhívásokat.
- Kerülje a rekurziót, amikor csak lehetséges – a rekurzió bizonyos esetekben szükséges gonosz, bár ezt óvatosan kell használni.
- Frissítse a rendszer hardverét – a gyenge alkalmazásteljesítmény nem vezethet gyenge kódba és algoritmusokba; ehelyett a mögöttes ok az alkalmazást futtató rendszerrel kapcsolatos lehet.
- Növelje a LAN és a WAN sávszélességét – nem minden funkció működik együtt a helyi hardverrel; ha az alkalmazás távoli rendszerekkel beszél, akkor a hálózati infrastruktúra hibás lehet.
- Tisztítsa meg az operációs rendszert – a rendetlen operációs rendszerek karbantartást igényelnek, hogy az alkalmazásokat a lehető legnagyobb mértékben futtassák.
- A jobb hatékonyság érdekében alkalmazza a StringBuilder alkalmazást – a karakterláncok a legtöbb alkalmazásban szinte elkerülhetetlenek, de a „+ =” művelet rendkívül nem hatékony.
- Használja ki a gyorsítótárat a jobb teljesítmény érdekében – a gyorsítótárazás az egyik legjobb módszer a redundáns objektumok azonnali megjelenésének és a funkcióhívásoknak a csökkentésére.
- Kedvezze a köteget a halom felett – a verem a rendszer erőforrásainak szempontjából hatékonyabb, mivel fenntartja magát és felszabadítja a memóriát, amelyet elhasználódott tárgyak foglalnak el.
Mindezzel mélyüljön bele az egyes módszerekbe a Java alkalmazások teljesítményének javítása érdekében.
1. Végezzen profilozást és terhelési teszteket
A Java alkalmazások teljesítményének javításának első lépése a fejlesztési területek meghatározása. Anélkül, hogy tudnánk, hol vannak a legnagyobb problémák, az alkalmazás felgyorsítása olyan, mint egy dart dobása egy dart táblabe, miközben bekötött szemmel látják el. Szerencsére vannak olyan szoftveres eszközök, amelyek adatokat gyűjtenek az alkalmazás teljesítményéről.
Az első eszköz, amelyet javasolunk a Java-profilozó szoftver. Ilyen példa YourKit, amely megoldás a vállalkozások és az egyéni felhasználók számára is megfelelő. YourKit különféle licenceket kínál, például vállalati, tudományos, nyílt forráskódú és székhelyen elérhető lehetőségeket.
Jellemzői, többek között, az alábbiak:
- CPU teljesítmény profilozása
- A memória teljesítményének profilozása
- Memória szivárgás észlelése
- Szálak és szinkronizációs elemzés
- Webes, adatbázis- és I / O-teljesítmény tesztelés
Ezt az eszközt arra tervezték, hogy helyi rendszerekben, távoli rendszerekben, a jelenleg fejlesztés alatt álló projektekben, sőt gyártási szoftverekben is felhasználható legyen. YourKit ugyanakkor nem az egyetlen minőségi Java-profilkészítő, és erős versenytársa van más megoldásokkal, például EJ-Technologies, amely létrehozta a JProfiler.
Ez az eszköz nagyon hasonlít a YourKit tesztelési lehetőségeket biztosít a helyi és távoli munkamenetekhez, offline triggerekhez, pillanatkép-összehasonlításokhoz, kéréskövetéshez (HTTP, RMI, webszolgáltatás, EJB, AWT események, szálindítások stb.), valamint az egyedi szonda létrehozása sok más szolgáltatás között. Végül, JProfiler hardver, szál, telemetria és adatbázis profilkészítő eszközökkel is rendelkezik.
2. Tisztítsa meg a kódot és vizsgálja felül az algoritmusokat
A szoftver forráskódja olyan, mint egy regény első vázlata – az első iteráció után soha nem tökéletes, és jelentős módosításokat igényel, mielőtt végül megtisztulna. Mindenekelőtt arra törekednie kell, hogy tiszta, kommentárokkal telített kódot írjon, így navigálhat a szövegben, és könnyen megjegyezheti, hogy miért jelentettek meg minden objektumot és miért hívták meg az egyes funkciókat.
Annak ellenére, hogy a kód tisztán tartása önmagában nem gyorsítja fel a Java alkalmazást, hatékonyan segíti a felesleges kód megbontását, valamint az algoritmusok gyengeségeinek és redundanciájának felkutatását. A tiszta kód a hibakeresési folyamatot is simábbá teszi, és segít a hibák (például memóriaszivárgások) kijavításában, amelyeket a profilozás és a szoftver tesztelése után azonosítottak..
3. Ha lehetséges, kerülje a rekurziót
A rekurzió egy alapvető programozási stratégia, amelyben egy funkció felhívja magát egy probléma megoldására. A rekurzió nem feltétlenül gonosz, ám kétélű kard. Vannak előnyei és gyakorlati felhasználása. A rekurzió például a kódot tisztábbá és kompaktabbá teszi, és csökkenti a hurok és a funkciók tautológiai iterációit.
Mivel a rekurzió csökkenti a kód bonyolultságát és mennyiségét, elősegíti a Java alkalmazás karbantartását. Sajnos ezek az előnyök az alkalmazás teljesítményének árán származnak. A rekurzív és a funkcionális hívások a sebesség és a teljesítmény szempontjából drágák, mivel pop és push funkciókat igényelnek a veremben.
A rekurzió hatékonyabb megoldása viszont a hurok. A hurokműveletek nehezebben olvashatók, és több karakterből és forráskódból állnak, mint a rekurzió, de ezek előnyösek, amikor az alkalmazás teljesítményét maximalizálni kell. Lehet, hogy nem mindig célszerű teljesen elhagyni a rekurziót, de a lehető legnagyobb mértékű enyhítése elősegíti a Java alkalmazások teljesítményének javítását..
4. Frissítse a rendszer hardverét
A felszínről úgy tűnhet, hogy az alulteljesítő Java alkalmazásokat szoftverprobléma okozhatja. Annak ellenére, hogy ellentmondásosnak tűnik, a gyenge teljesítmény kiváltó oka lehet a hardver. Függetlenül attól, hogy egy Java alkalmazást helyileg vagy távolról futtat, a Java alkalmazás futó rendszernek előfordulhat, hogy nincs elegendő rendszer erőforrása a kód kielégítő végrehajtásához.
A frissítés legkönnyebb része, amely tipikusan közvetlenül érinti a szoftver teljesítményét, a RAM. A számítógép memóriájának megnövelésével csökkenti annak esélyét, hogy a rendszer elfogy az alkalmazási adatok tárhelyén, és arra kényszerüljen, hogy visszatérjen a merevlemez-meghajtó használatához expromitt RAM-ként. Ezt a gyakorlatot oldalfájlnak nevezik, és bár ennek gyakorlati felhasználása is van, az oldalfájlok nemkívánatosak nagyteljesítményű alkalmazásokban, mint a RAM, mivel a merevlemez olvasási és írási folyamata lényegesen lassabb..
Ezenkívül, ha a Java-alkalmazás jelentősen együttműködik a merevlemezzel (például adatmentéssel vagy szinkronizáló alkalmazással), a merevlemez frissítése javíthatja a rendszer teljesítményét. Például frissíthet egy magasabb fordulatszámú meghajtóra, a gyorsabb olvasási és írási eljárásokhoz. Vegye figyelembe azonban, hogy a leggyorsabb merevlemezek SSD-k (Solid State Drives), és nem tartalmaznak mozgó alkatrészeket. Végül, néhány rendszer, de nem mindegyik képes a CPU kibővítésére is, bár nem olyan egyszerű frissíteni, mint a RAM.
5. Növelje a LAN és a WAN sávszélességét
Bár a helyi és a szerver hardver a Java alkalmazások – beleértve a Java webes alkalmazásokat – kulcsfontosságú eleme, nem ez az egyetlen potenciális szűk keresztmetszet. Függetlenül attól, hogy a Java webalkalmazásokat lokálisan, LAN-on, intraneten vagy távolról üzemelteti – a sávszélesség döntő szerepet játszik az alkalmazások elérhetősége és teljesítménye szempontjából – különösen a csúcsterhelés idején.
Általánosságban elmondható, hogy a LAN sávszélessége jellemzően bőséges és olcsó, míg a WAN sávszélessége drága és hiányos. Ennek ellenére más LAN forgalom kiszoríthatja azt a helyi hálózatot, amelyhez a Java webalkalmazásokat futtató kiszolgáló csatlakozik. Ezt a problémát kétféle módon lehet kezelni.
Először dönthet úgy, hogy frissíti a kapcsolókat és a helyi hálózati infrastruktúrát Gigabites Ethernet vagy 10 Gigabites Ethernet megoldásra, hogy enyhítse a hálózati torlódásokat. Alternatív megoldásként megvalósíthat egy QoS (Quality of Service) házirendet, amely a Java alkalmazásokat üzemeltető szerverre és onnan érkező forgalmat prioritássá teszi a többi forgalom felett.
Ezenkívül a WAN sávszélességének növelése mellett (amelyhez szükség lehet egy másik ISP kiválasztására) a terheléselosztást is megvalósíthatja, hogy jobban kihasználhassa a redundáns ISP kapcsolatok előnyeit. Ne feledje, hogy a rossz teljesítményű Java-alkalmazásokat nem feltétlenül okozhat szoftverprobléma, és befolyásolhatja a hálózati torlódások.
6. Tisztítsa meg az operációs rendszert
Az operációs rendszerek háztartást és karbantartást igényelnek, hogy a csúcsteljesítményen működjenek, és a rendszer erőforrásait hatékonyan használják. Egy rosszindulatú operációs rendszer hajlamos lelassulni és lassúnak érezni magát. Lehet, hogy például sok láthatatlan folyamat fut a háttérben, amiről még nem is tudott.
Ezenkívül számos alkalmazás telepítési eljárása automatikusan hozzáadja az új szoftvert az indításkor induló alkalmazások listájához. Ezek az alkalmazások nemcsak a rendszer lassabb indulását idézik elő, hanem a létfontosságú rendszer erőforrásokat is, például RAM és CPU ciklusokat, amelyek egyébként felhasználhatók egy Java alkalmazás futtatásához..
A szükséges és nemkívánatos folyamatok és alkalmazások metszése megkönnyíti az operációs rendszer takarítását, csakúgy, mint a rendszerleíró adatbázis tisztítójának futtatása a Windows rendszereken. A rendszerleíró adatbázis-tisztító enyhítheti és kiküszöbölheti a DLL hibákat és a futásidejű hibákat azáltal, hogy eltávolítja a hibás bejegyzéseket a rendszerleíró adatbázisból, és újjáépíti az index struktúrákat.
Ezenkívül egy másik takarítási feladat – amelyet óvatosan kell használni – a merevlemez töredezettségmentesítése. Az idő múlásával, mivel a fájlokat folyamatosan írják a merevlemezre, és törlik őket, azok szétszórt, kaotikus rendetlensé válhatnak. A töredezettségmentesítő eszköz felkerekíti az összes adatot, és átírja azokat szomszédos blokkokba, ez csökkenti a merevlemez meghajtójának az információk olvasásának idejét..
De figyelmeztetni kell: a töredezettségmentesítési folyamat nagyon igényes és adóztatást jelent a merevlemezen. Ha napi, heti vagy akár havi töredezettségmentesíti, drasztikusan csökkenti a merevlemez élettartamát. Ésszerűbb és gyakorlati gyakoriság évente két-három alkalommal.
7. A jobb hatékonyság érdekében alkalmazza a StringBuilder alkalmazást
A karakterláncok az általános adattípus az alkalmazások túlnyomó többségében – elég nehéz elkerülni vagy figyelmen kívül hagyni őket. Sajnos a húr összefűzése ugyanolyan hatástalan, mint gyakran. Úgy tűnik, hogy a karakterláncok összekapcsolásának legjobb módja a „+ =” művelet, de ez egy túlhasználatlan művelet, amely vadul hatástalan.
A probléma az, hogy a „+ =” művelet minden felhasználásakor egy teljesen új karakterláncot oszt ki, amely sok redundáns és felesleges karakterlánc-adatot hozhat létre. Noha ez a művelet akkor és akkor nem fogja megállítani a Java alkalmazás leállását, minden apró művelet összeadódik. Képzelje el, hányszor lehet növelni ezt a hatékonyságot egy hurokban?
Szerencsére van egy hatékonyabb alternatíva. Az StringBuilder Az objektumot úgy tervezték, hogy hatékony alternatívája legyen az alapvető összekapcsolási műveleteknek. Ha javítani akarja a Java alkalmazások teljesítményét, szokásként ezt az adattípust használja a „+ =” művelet lusta rövidítése helyett..
8. Használja ki a gyorsítótárazást a jobb teljesítmény érdekében
A gyorsítótárazás az egyik leghatékonyabb módszer a Java alkalmazások hatékonyságának növelésére. A gyorsítótárazás alapfogalma a több hívás és funkció összevonása egy újrafelhasználható erőforrásba. Bár a gyorsítótárazásnak számos formája van, amikor a legtöbb ember itt használja a „gyorsítótárazás” szót, az első dolog, ami eszébe jut, az adatbázis-technológia.
Az adatbázisban található adatokat nemcsak a gyorsítótárban lehet tárolni a sávszélesség megőrzése érdekében, hanem a nagy mennyiségű adatbázis-összeköttetést is, amely egyébként lelassítaná az alkalmazást. Ennek ellenére ne feledje, hogy a gyorsítótárazást nem szabad túlzottan felhasználni. Intuitív módon azt gondolhatja, hogy mindent tároljon, ha a közeljövőben újra használni szeretné. Gondoskodnia kell arról, hogy a gyorsítótárazott adatok és kapcsolatok elég sok legyenek ahhoz, hogy a teljesítmény javuljon.
9. Helyezze a halomot a halom fölé
A javított Java alkalmazásteljesítmény érdekében tárolja adatait a halomban, nem a halomban. Miért kérdezed? Mivel sokkal hatékonyabban használja a memóriát, és eltávolítja az adatokat, amelyek már teljesítették a céljaikat. A verem nem csak hatékonyabban használja az erőforrásokat, hanem ellenőrzése alatt tartja a fölött is. A kötelet a halom fölötti előnyben részesítésének legjobb módja az, ha elkerüljük a burkolóórák azonnali megjelenítését.
Csakúgy, mint a rekurzió használata, nem mindig (vagy akár nem is lehetséges) elhagyni a burkolóórák használatát. Általános övszabályként azonban alapértelmezetten olyan primitív adattípusokat kell használni, mint például az „int”, az egész számmal szemben. Az a taktikai gyakorlat, amelyet megszerezhet, számos tényezőtől függ. Ennek ellenére a verem kedvezése jó útmutatás a legkisebb és leghatékonyabb Java kód felé vezető út megkereséséhez.
A piacon vannak olyan eszközök, amelyek segítenek a Java javítások sikeres frissítésében. Az egyik ilyen eszköz SolarWinds Patch Manager.
Letölthet egy teljesen működőképes 30 napos ingyenes próbaverzió
SolarWinds Patch ManagerDownload 30 napos ingyenes próbaverzió
Kapcsolódó: Legjobb javításkezelő eszközök
Ezen felül érdemes megnéznie a SolarWinds Java figyelő eszköz az alkalmazáskiszolgálókhoz a kiszolgálóval & Alkalmazásfigyelő a teljesítmény javítása érdekében. Letölthet egy teljesen működőképes 30 napos ingyenes próbaverzió.
SolarWinds Java figyelő eszköz alkalmazáskiszolgálókhoz, a SAMDownload 30 napos INGYENES próbaverziója
Végső gondolatok
Ha egy lassú, mászó Java alkalmazás miatt a vér felforrósodik, vegyen mély lélegzetet, és ne felejtse el, hogy ne ökölbe szorítsa a billentyűzetet – ez csak még rosszabbá teszi a dolgokat. Ehelyett mély lélegezzen be, és használja a fent említett módszerek egyikét a Java alkalmazás teljesítményének felgyorsításához.
Ha bármilyen személyes története vagy anekdotája van a Java alkalmazások felgyorsításáról, kérjük, tegye meg véleményét az alábbiakban.
zsát – a StringBuilder használata javítja az alkalmazás teljesítményét, mivel hatékonyabb memóriakezelést tesz lehetővé. Használja ki a gyorsítótárazást a jobb teljesítmény érdekében – a gyorsítótárazás lehetővé teszi az alkalmazások számára, hogy gyorsabban hozzáférjenek a gyakran használt adatokhoz. Helyezze a halomot a halom fölé – a halomfölötti memóriakezelés javítja az alkalmazás teljesítményét, mivel hatékonyabb memóriakezelést tesz lehetővé.
Végső gondolatok: A digitális korszakban élés áldás és frusztráció is lehet, különösen akkor, ha az alkalmazások rosszul teljesítenek. Azonban a Java alkalmazások teljesítményének javítása érdekében számos lépést tehetünk, például a kód tisztítása, az algoritmusok felülvizsgálata, a rendszer hardverének frissítése, a hálózati sávszélesség növelése, az operációs rendszer tisztítása, a StringBuilder alkalmazása, a gyorsítótárazás kihasználása és a halomfölötti memóriakezelés alkalmazása. Ezek a lépések segíthetnek abban, hogy az alkalmazások zökkenőmentesen működjenek, és csökkentsék a stresszt, amikor azok lefagynak vagy lassan működnek.