Portál AbcLinuxu, 13. července 2025 13:17
Vyšla Esmska 0.10.0. Nově běží na Mac OS X Leopard (s Javou od Apple) a s OpenJDK 6. Opravuje problém s odesíláním zpráv přes t-zones delších než 1 SMS. Byla přidána kontextová nabídka do seznamu kontaktů a do fronty. Dále byl vylepšen import kontaktů, program má novou ikonu atd.
Tiskni
Sdílej:
svn cat svn://svn.watzke.cz/dave/overlay/app-mobilephone/esmska/files/esmska.desktop > esmska.desktopa patří do
/usr/share/applications/
. Poslal mi to teď GEDIK, tak jsem to hodil do overlaye.
mohou tam být akorát absolutní cestyA odkdy? Obvykle se naopak používají relativní cesty. Binárku pak hledá někde v PATH, ikonky hledá podle podle tohohle.
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass2(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:774) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:160) at java.net.URLClassLoader.defineClass(URLClassLoader.java:254) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:316) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
S tímto přístupem bych nikdy nepřešel z psacího stroje na PC.:)Mam tokovej přístup, aproto používám jabko!
cd<mezera>
a přetáhnout ikonku adresáře s rozbalenou Esmskou do Terminálu, pak zmáčknout Enter/bin/java -jar esmska.jar
top
), tak 83.4 MB je paměť, kterou si Java od systému zažádala. Neznamená to automaticky, že jí skutečně využívá. Jestli chceš pozorovat detailně ty hrůzy, co se s pamětí v Esmsce dějí, pak si nainstaluj Java 6 SDK a spusť si program jconsole
. To pak uvidíš teprve věci No, pokud se díváš do sledovátka systému (např. top), tak 83.4 MB je paměť, kterou si Java od systému zažádala. Neznamená to automaticky, že jí skutečně využívá.To už je ale prakticky jedno, že ji nevyužívá. Program s únikem paměti uniklou paměť taky nevyužívá, a přesto je to problém.
To už je ale prakticky jedno, že ji nevyužívá. Program s únikem paměti uniklou paměť taky nevyužívá, a přesto je to problém.Problém s úniky paměti je v tom, že ta zabraná paměť neustále roste, až přeroste všechno, co je k dispozici. Alokovaná ale nevyužitá paměť problém není, je to někde ve swapu a ostatním programům to nepřekáží.
U noveho pocitace je to celkem jedno, ale u starsich pocitacu muze mit smysl dat prednost aplikaci, ktera je napsana v jinem jazyku.To je právě ten přístup, co se mi nelíbí. Omlouvat zbytečné nároky tím, že je k dispozici více prostředků. To je pak nekonečný závod. (Tímto nechci vyjadřovat směrem k autorovi programu cokoliv negativního. Je to velmi pěkný program.)
eclipse
není zrovna moc dobrá ukázka Javovské aplikace, protože pod tím máte nativní SWT.
Ještě mě zajímá jedna věc co se tu diskutovala. Jak časově náročné pro aplikaci je vrátit paměť systému a znova si o ni zažádat ? Berme v úvahu pro zjedodušení třeba jen malloc() a free() - Mi to přijde bleskové, ale možná je něco o čem nevím, nbo jiný problém v oblasti virtuálních mašinPřinejmenším je to systémové volání, takže se musí přepnout kontext. Navíc aplikace nežádá extra o každých pár bajtů, ale žádá o celé stránky. Takže pak by musela neustále sledovat, co je kde jak zaplněné a pokoušet se shlukovat prázdná místa, aby dostala celou prázdnou stránku a tu mohla uvolnit. A to vše by dělala preventivně, co kdyby někdy začla docházet paměť. To je podle mne lepší mít v počítači tolik RAM, aby se do ní vešly všechny současně používané aplikace najednou. Pak ke swapování dojde jenom v okamžiku, kdy jednu aplikaci přestanete používat ale necháte ji spuštěnou – místo uložení stavu a znovunačítání když aplikaci znovu spustíte se pak prostě jen obraz paměti odloží na disk a zase se z něj přečte. Je to podobné, jako s uspáním počítače – taky je výrazně rychlejší odložit obsah RAM na disk a po probuzení počítače jej odsud znovu načíst, než všechny programy startovat znovu.
Aplikace (nemusí být nutně ani JavaVM) si alokuje mnohem víc pamětiObvykle to nebývá aplikace, ale alokátor jakožto součást standardní knihovny. Obvyklé alokátory to mimochodem dělají velmi podobně, akorát u javovského heapu je velmi dobře vidět obrovská velikost inkrementu (vždy rovna aktuální velikosti, čili z 64 MB se heap zvětšuje rovnou na 128 MB, to je celkem nemilé, i když to asi má nějaké principiální důvody stran jednoduchosti a efektivity implementace, fragmentace a já nevím čeho).
Diskuze ale začala s tím, že je alokováno XXX megabajtů, ale ty se z části nepoužívají a jsou zabrané "co kdyby náhodou". Je otázka, zda je to skutečně pravda.Za prvé, pokud se nepoužívají, mají ležet někde ve swapu, a tam mne netrápí. Za druhé, pokud si někdo nastaví, že má JVM hned na začátku alokovat 512 MB, když aplikace nikdy nevyužije víc než 20 MB, je to jeho problém. Mimochodem, výchozí hodnota pro maximum heapu je 64 MB.
Nevím jak to přesně funguje u Javy, ale myslím, že na požádání tu paměť uvoluje. Je zbytečné paměť uvolňovat, dokud ji nikdo nechce, že?Takhle to nefunguje. Jádro procesům určitě neříká "hele, nechceš třeba něco uvolnit?". To případně rovnou střílí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.