Keresés

Részletes keresés

NevemTeve Creative Commons License 2010.10.04 0 0 5409
Én, ha neked volnék, a 'disposed' ablak mutatóját (mutatóit) kézileg null-ra állítanám, hogy ezzel is bátorítsam a garbage collectort arra, hogy felszabadítsa a hozzá tartozó memóriát.
Előzmény: Rockmenyét (5408)
Rockmenyét Creative Commons License 2010.10.04 0 0 5408
Ok, ez igaz. De a következőt nem értem:
-létrehozom az internalFrame-et
-hozzáadom a desktophoz
-bezárom (defaultCloseOperation = dispose)
-meghívom a System.runFinalization() -t és a System.gc()-t
Ha ezután a bezárt myInFrame pack() és setVisible(true) metódusait meghívom, majd újra hozzáadom a desktophoz, megjelenik az ablak.
Biztosan én értek valamit félre, csak nem tudom mit.
A myInFrame csak egy textArea-t tartalmaz, hogy legyen rajta valami. Semmilyen extra eseménykezelő nincs, szóval nem értem miért nem szabadul fel.
Előzmény: NevemTeve (5407)
NevemTeve Creative Commons License 2010.10.04 0 0 5407
> a rá mutató referencia nem lesz null.
"Magától" biztosan nem fog megváltozni egy változó értéke.
Előzmény: Rockmenyét (5404)
Rockmenyét Creative Commons License 2010.10.04 0 0 5406
Köszi, így már érthetőbb!
Előzmény: magyarpityu (5405)
magyarpityu Creative Commons License 2010.10.04 0 0 5405

Szia!

 

A gc() metódus arra való, hogy rávegye a szemétgyűjtő mechanizmust a már finalizált objektumok által lefoglalt memória felszabadítására. Azokat az objektumokat, melyekre nincs már hivatkozás, tehát a szemétgyűjtő mechanizmusra várakoznak, de még nem derítette fel azokat a szemétgyűjtő mechanizmus, mert még a finalize() metódusuk nem futott le, a gc() nem fogja kitakarítani. A gc() hívás előtt kell egy runFinalization() hívás, amivel ráveszed a szemétgyűjtő mechanizmust, hogy hívja meg azokat a finalize() metódusokat, melyek olyan objektumok destruktorai, melyekre már nincs hivatkozás, hogy ezután majd a gc() hívással felszabadíthasd az ezek által lefoglalt memóriát. Tehát először runFinalization(), majd gc(). Bővebben: System.runFinalization()

Előzmény: Rockmenyét (5404)
Rockmenyét Creative Commons License 2010.10.04 0 0 5404
Sziasztok!

Egy kis segítség kellene: egy MDI programot farigcsálok, a gondom az hogy ha létrehozok egy InternalFrame-et, hozzáadom a desktopPane-hez, majd az internalFrame-et dispose-zal megszüntetem, a rá mutató referencia nem lesz null.
Készítettem rá egy tesztprogramot, ami semmi mást nem csinál csak ablakokat nyitogathatok és zárhatok be, ugyan az a helyzet. Guglizással elég ellentmondó válaszokat kaptam, van aki szerint ez normális.
Ha az, hogyan érhetem el hogy tudjam, egy ablak be lett zárva, és csak akkor hozhassam létre újra?
Ha dispose() után az ablak ugyan úgy létezik (azaz az általa használt erőforrásokat a gc nem szabadítja fel, hiszen a referencia .toString metódusa működik), akkor pár kinyitás-becsukás után lassan elfogy a memória?
el Papi Creative Commons License 2010.09.25 0 0 5403
Szerintem meg amig az ember egy RISC/CISC processzorra ir programot addig jo ha legalabb nagy vonalakban tisztaban van azzal, hogy amit beir HLL utasitast abbol mi lesz LL szinten. Kulonben az ember soha nem fogja megerteni a programnyelvek kozti kulonbsegeknek okait, illetve hogy mitol alakul egy nyelv ugy ahogy.

Pl. a most bekerulo Closure-k ki lettek hagyva a lexikal scoping adta nehezsegek miatt, C-ben sincsenek, ellenben Pascalban vannak.
Előzmény: bigzed (5402)
bigzed Creative Commons License 2010.09.25 0 0 5402
Szerintem ez mindig "elojon". Minden HLL utasitasbol a vegen vhol gepi kod szuletik es fut le. En pl. HLL nyelvekkel kezdtem majd kesobb pont azert kezdtem el foglalkozni assemblyvel (csak elmeleti szinten), hogy jobban megertsem milyen kovetkezmenyei vannak/lehetnek egy egy HLL megoldasnak.

Hat en azt gondoltam, hogy minel "High-abb" annal kevesbe. C eseteben, meg azon csodalkoznek, ha lenne olyan, hogy String. Java-nal mar azon, ha nem lenne olyan, hogy String. C-nel azert fejben meg sokszor "leforditottam" magamban a kodot assemblybe ropteben. Java-nal mar ez meg sem fordul persze a fejemben, mar nem "gondolok utana". Nyilvan ez igy van jol. Persze ilyen esetekben(szalak), az ember kicsit "lejjebb ereszkedik".
Előzmény: el Papi (5398)
bigzed Creative Commons License 2010.09.25 0 0 5401
Ok, hibasan fogalmaztam, mindegyik tesztben az atomic volt gyorsabb, de az 1000%-os arany miatt irtam, hogy nem sikerult eloideznem a "vart kulonbseget". Az emlitett konyv eseteben ez 40%. En pedig az egymagos linuxos rendszert vettem etalonnak, nem pedig a 8 "magos" windows-ost.
Előzmény: el Papi (5397)
el Papi Creative Commons License 2010.09.25 0 0 5400
Ha nem irok ide ilyen csacskasagokat, nem szuletnek ilyen "nemileg" tartalmasabb hozzaszolasok sem, mint amilyet irtal, es akkor mi lenne ezzel a topic-kal? :)

Nem irsz csacskasagokat azzal ha kerdezel vmit, foleg ha olyat amit korabban nem kerdeztek.
Nekem a Java performance illetve multithreading a "szakteruletem", vagyis ez kifejezetten erdekel, viszonylag melyebb a tudasom ezen a teruleten mint az atlagnak. Egyebkent is szivesen fordulok masokhoz segitsegert amikor vmit nem tudok (ilyen sokszor van).
Előzmény: bigzed (5396)
el Papi Creative Commons License 2010.09.25 0 0 5399
return IntegerArray(value)

Ez termeszetesen return IntegerArray[value];
Előzmény: el Papi (5394)
el Papi Creative Commons License 2010.09.25 0 1 5398
(( cmpxchg: Nagyon regen - gepi kodu, majd assembly programozas utan, meg amikor c-ben irogattam ezt-azt - gondoltam utoljara arra, hogy milyen assembly kodra fordulhat a program, erdekes, hogy ez meg a Javanal is elojon egyeseknek. :D ))

Szerintem ez mindig "elojon". Minden HLL utasitasbol a vegen vhol gepi kod szuletik es fut le. En pl. HLL nyelvekkel kezdtem majd kesobb pont azert kezdtem el foglalkozni assemblyvel (csak elmeleti szinten), hogy jobban megertsem milyen kovetkezmenyei vannak/lehetnek egy egy HLL megoldasnak.
Előzmény: bigzed (5396)
el Papi Creative Commons License 2010.09.25 0 0 5397
A prog celja, a monitoros es az atomic-os szalszinkronizacio sebessegenek osszehasonlitasa. Elvart eredmenye pedig az atomicos gyorsabb volta. Ezt ugyebar nem sikerult eloideznem, lasd linuxos ertekek.

Szerintem meg jol latszik, az atomic gyorsabb mint a monitorszinkron.
Legalabbis nalam 2707ms << 25121ms.
Majdnem 10x-es a kulonbseg.
Előzmény: bigzed (5396)
bigzed Creative Commons License 2010.09.25 0 0 5396
Figy!

Ha nem irok ide ilyen csacskasagokat, nem szuletnek ilyen "nemileg" tartalmasabb hozzaszolasok sem, mint amilyet irtal, es akkor mi lenne ezzel a topic-kal? :)

Egyebkent a kodot nem en krealtam, hanem az Utikalauzbol potyogtem be. A prog celja, a monitoros es az atomic-os szalszinkronizacio sebessegenek osszehasonlitasa. Elvart eredmenye pedig az atomicos gyorsabb volta. Ezt ugyebar nem sikerult eloideznem, lasd linuxos ertekek. Egyebkent tobbszori meres eredmenyet mutattam, es nem is atlagoltam, mert szinte azonos eredmenyek szulettek minden alkalommal.
Azt gondolom egyebkent a Date tokeletesen megfelel a celra, nem ezen torzulnak az eredmenyek, ha torzulnak.

A tapasztalat persze mindenkeppen teged igazol, ugy tunik a kod nem nagyon alkalmas a ketfele szinkronizacio osszehasonlitasara.

(( cmpxchg: Nagyon regen - gepi kodu, majd assembly programozas utan, meg amikor c-ben irogattam ezt-azt - gondoltam utoljara arra, hogy milyen assembly kodra fordulhat a program, erdekes, hogy ez meg a Javanal is elojon egyeseknek. :D ))
Előzmény: el Papi (5394)
el Papi Creative Commons License 2010.09.25 0 0 5395
Ezen a linken lathatsz egy kb. 1 oras eloaadast Kirk Pepperdine-tol java performance measurement teren nehany szorakoztato feladattal megspekelve, ha teljesitmeny teszteket szeretnel kesziteni szerintem mindenkepp erdemes megnezned.
Előzmény: el Papi (5394)
el Papi Creative Commons License 2010.09.25 0 0 5394
Ez egy kicsit almat a kortevel valo hasonlitas.
Az pl. legalabb olyan fontos lenne megemliteni, h melyik JVM-el vegezted el ezeket a teszteket.
Tovabba ha tesztelsz, akkor legalabb 5x futtasd le ugyanazt a tesztet es az egyuttes eredmeny az tobbet mond mint egy egyszeri futas.
Date helyett hasznalj vmi lightweightebb stoppert, egy sima System.currentTimeMillis is megteszi, de vannak kulon StopWatch classok is.
A problema azzal amit csinaltal, hogy igy a Date objektum peldanyositasa is beleszamolodik a measurement-be.

A konkret eremenyekrol pedig te az elso ket verzioban egy Integert hasznalsz a harmadikban pedig AtomicIntegert ami oriasi kulonbseg.

Amikor beirod azt hogy ++Integer_variable, akkor hasznalod az autoboxing funkciot ami az 5-os javatol kerult bele, korabban erre nem lett volna lehetoseg.
Az Integer egy immutable valtozo, azaz amikor beirod azt hogy ++Integer az a kovetkezot jelenti:

NewInteger.valueOf(OldInteger.intValue+1);

Ezt tovabb bontva, ha -128 es 127 kozotti az ertek akkor egy pointert kapsz egy mar inicalizalt Integerhez:

return IntegerArray(value)

ellenkezo esetben pedig:

return new Integer(value);

Azaz egy uj objektumot inicializalsz.

Ez osszessegeben annyit jelent, hogy az esetek egy elenyeszo reszetol eltekintve te a ++counter eseteben egy fuggvenyt hivsz meg, ami a heap-en foglal memoriat es minden esetben egy uj objektum konstrualasat eredmenyezi.

Ezzel szemben az AtomicInteger:
ebben az esetben egyetlen egyszer epitesz objektumot utana marcsak a belso int valtozojat modositod. Ezt raadasul az UnSafe osztalyon keresztul teszi, ami lehetove teszi tobbek kozott a CAS (Compare And Swap) operaciokat amivel amolyan mikrotranzakciomenedzsment ill. atomicitas valosul meg.
Az x86 procikon ez jellemzoen a cmpxchg operacio. Ez optimistic lock-ot tesz lehetove, azaz kimasolja az erteket eloszor egy regiszterbe, egy masikban eltarolja hozzaadva egyet, aztan ha nem valtozott az eredeti ertek akkor felulirja az erteket. Ha valtozott akkor ujra az egesz.

Az altalad beirt ertekek inkabb azt mutatjak, hogy tobbmagos kornyezetben jobban ervenyesul a multithreading, nagyobb az eselye annak hogy osszeakadnak a szalak mint egy singlecore-on szimulalt multithreading kornyezetben.
Es akkor meg mindig nagyon sok fugg attol melyik JVM-et hasznaltad es az milyen optimizaciokat hajtott vegre.
Előzmény: bigzed (5393)
bigzed Creative Commons License 2010.09.25 0 0 5393
nincs kerdesem. gondoltam esetleg erdekesek lehetnek masok szamara is az adatok.

(fokent a 2707ms-os linuxos adat)

Előzmény: el Papi (5392)
el Papi Creative Commons License 2010.09.25 0 0 5392
Lehet faradt vagyok mar, de nem ertem mi a kerdesed. Illetve nem latok olyat.
Előzmény: bigzed (5391)
bigzed Creative Commons License 2010.09.25 0 0 5391
Hallo!

Hatha v.kit erdekel. Szalakkal bibelodom. 20 szal egyenkent 10 000 000 iteracioval.

linux 32 bit, 1400MHz Tualatin (Pentium III)
szinkronizacio nelkul: 22787ms !!!!!
monitoros szinkronizacioval: 25121ms
atomi muveletekkel: 2707ms !!!!!

win 7 64bit, 2800MHz Core i7 860 (4magos*2)
szinkronizacio nelkul: 3840ms
monitoros szinkronizacioval: 13840ms
atomi muveletekkel: 6387ms

Egyes ertekek (linuxnal a szinkronizacio nelkuli es az atomi muveletekkel vegzettek aranya) (masreszt a linuxos es win7-es gep megfelelo ertekeinek viszonya is) szamomra igen meglepoek.


package speed1;

import java.util.concurrent.atomic.*;

public class Main {

static Integer counter = new Integer(0);
static class Updater extends Thread {
Updater() {
start();
}
public void run() {
for (int i = 0; i < 10000000; i++) {
int cnt = ++counter;
}
}
}

static Integer lockCounter = new Integer(0);
static class LockUpdater extends Thread {
LockUpdater() {
start();
}
public void run() {
for (int i = 0; i < 10000000; i++) {
synchronized (lockCounter) {
int cnt = ++lockCounter;
}
}
}
}

static AtomicInteger atomicCounter = new AtomicInteger(0);
static class AtomicUpdater extends Thread {
AtomicUpdater() {
start();
}
public void run() {
for (int i = 0; i < 10000000; i++) {
int cnt = atomicCounter.getAndDecrement();
}
}
}

public static void main(String[] args) {

Thread[] threads = new Thread[20];
java.util.Date start = new java.util.Date();
for (int i = 0; i < threads.length; i++) {
threads = new Updater();
}
for (int i = 0; i < threads.length; i++) {
try {
threads.join();
} catch (InterruptedException e) {
}
}
java.util.Date stop = new java.util.Date();
System.out.println(“Update: “ + (stop.getTime() - start.getTime()) + “ms”);


threads = new Thread[20];
start = new java.util.Date();
for (int i = 0; i < threads.length; i++) {
threads = new LockUpdater();
}
for (int i = 0; i < threads.length; i++) {
try {
threads.join();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
stop = new java.util.Date();
System.out.println(“LockUpdate: “ + (stop.getTime() - start.getTime()) + “ms”);



threads = new Thread[20];
start = new java.util.Date();
for (int i = 0; i < threads.length; i++) {
threads = new AtomicUpdater();
}
for (int i = 0; i < threads.length; i++) {
try {
threads.join();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
stop = new java.util.Date();
System.out.println(“AtomicUpdate: “ + (stop.getTime() - start.getTime()) + “ms”);

}
}
el Papi Creative Commons License 2010.09.22 0 0 5390
En azt hittem, h siman csak a Javascriptet keverte a Javaval, de ezek szerint akkor csak floodolt.
Előzmény: nadamhu (5389)
nadamhu Creative Commons License 2010.09.22 0 0 5389
Az még hagyján, hogy offtopic, az még lehetne amiatt, hogy nem tudja bekategorizálni. De hogy benyomja vagy 5 topikba ugyanazt a szöveget 2 percen belül, az egy icipicit ütközik a netikettel akárhogyis nézem. Na mindegy.
el Papi Creative Commons License 2010.09.22 0 0 5388
Ez itt offtopic.
Előzmény: MoBiBenc (5387)
MoBiBenc Creative Commons License 2010.09.22 0 0 5387
Sziasztok,üdvözlök mindenkit!

Hobbi szinten fotózom, weblap szerkesztéshez / készítéshez nem értek – mégis belekerültem, próbálkozom vele. A program amit használok egy végtelen primitív, de számomra annál egyszerűbb, kezelhetőbb – „web page maker” – viszont eljutottam addig, hogy azt mondhassam, ez kevés nekem. Így kívül kerültem a program hatáskörén, próbálom egyéb külső segítséggel moddingolni, fejleszteni a honlapom…itt viszont már az én tapasztalatom bizonyult kevésnek – egyszerűen nem értek hozzá. (www.molnarbence.com)

A célom elvileg egyszerű. A képnézegetést, galériát szeretném lightbox szerűen megoldani, de 1 lightboxban nem egy képet megjelenítve, hanem egymás mellett sokat…ezt alapjaiban véve sikerült megoldani, egyetlen kivétellel, aminek a forrása is kissé más. A weblapomon van egy legördülő lista, aminek meg tudtam adni a célokat – ha kiválasztod őket, hova ugorjon. S ezt is ugyan olyan lightbox szerűen szeretném kivitelezni, akár csak a többi (sport, koncert, egyéb, kapcsolat) kategóriát. Ha most kiválasztasz egyet a legördülő közül, láthatod, hogy hogyan működik, egyszerűen egy másik oldalra dob át.

A web-oldal megjelenítő „lightbox” (lightwindow - http://www.p51labs.com/lightwindow) működése:

- megadottfájlokat felmásolsz,
- a html kódos weblapodba beillesztesz egy kódot head alá:

<link href="http://www.molnarbence.com/favicon.ico" rel="icon" />
<script type="text/javascript" src="javascript/prototype.js"></script>
<script type="text/javascript" src="javascript/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="javascript/lightwindow.js"></script>
<link rel="stylesheet" href="css/lightwindow.css" type="text/css" media="screen" />

- és a linkeket ilyen módon írod át:

<a href="http://.../" class="lightwindow"/a>

A legördülő listás megoldásom a honlapon a web page maker a következőképpen írja le:

<form name="form1" target="_blank" method="POST" style="margin:0px">
<select name="formselect1" style="position:absolute;left:568px;top:464px;width:434px;z-index:6">
<option value="">válassz...</option>
<option value="20100918_csilleberc.html">HAMAROSAN -> 2010.09.18 - 24 órás váltó - Csillebérc</option>
<option value="20100904_orsiati.html">HAMAROSAN -> 2010.09.04 - Orsi & Attila Esküvője</option>
<option value="20100822_sheket.html">2010.08.22 - Sheket - INTERNO fesztivál</option>
<option value="20100227_bluesfeszt.html">2010.02.27 - Blues fesztivál, Budapest</option>
<option value="20100119_bethlenbal.html">2010.01.19 - Bethlen bál</option>
</select>
</form>

<div id="html1" style="position:absolute; overflow:hidden; left:77px; top:498px; width:200px; height:125px; z-index:7">
<script language="javascript">
function gotoUrl(url) {
if (url == "")
return;
location.href = url;
}
function newWin(url) {
// url of this function should have the format: "target,URL".
if (url == "")
return;
window.open(url.substring(url.indexOf(",") + 1, url.length),
url.substring(0, url.indexOf(",")));
}
function fnOnChange(){
gotoUrl(selector.options[selector.selectedIndex].value);
return true;
}
var selector = (document.getElementById)?
document.getElementsByName("formselect1")[0] :
document.all.formselect1;
selector.onchange=fnOnChange;
</script></div>

Gondolom ebbe kellene valahogyan beleilleszteni a class="lightwindow" kódot, viszont nekem sehogy nem akart működni – minden esetben egész egyszerűen csak átdobott az oldalra…ötlet, vélemény, tanács?
Segítségetek előre is köszönöm,
Üdv, Bence :)
bigzed Creative Commons License 2010.09.05 0 0 5386
angyalhentes!

megerzesed telitalalat volt. (reszleteket nem irok, mert valszeg nincs itt a forumon olyan butuska, aki meg ebbol is tanulna)

hogy a linuxot nem erte el a windows kliens (ill elerte a tcpdump szerint, csak valszeg a callback nem ment) talan egy rossz hosts file okozta, de a megoldaldas a server inditasanal (tehat nem a kliensnel) a kovetkezo kapcsolo volt:-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx volt, ahol xxx.xxx.xxx.xxx a server ip cime

koszonom angyalhentes
Előzmény: angyalhentes (5376)
bigzed Creative Commons License 2010.09.04 0 0 5385
visszaolvastam a korabbi hozzaszolasomat, es talan nem irtam eleg vilagosan:

tehat a kliens es a server is azonos gepen (ubuntus linuxon) van.

elnezest szoszaporitasert is!
Előzmény: bigzed (5384)
bigzed Creative Commons License 2010.09.04 0 0 5384
.. mert jot rohogtem magamban, amikor az ismeros haver szivott a delphi-vel, amikor az egyik "gepen" muxik a progija a masikon meg nem. en meg gondoltam magamban, de jo, hogy eppen a javat tanulom.


(((persze azert a sajat butasagomban tovabbra is bizok)))
Előzmény: bigzed (5383)
bigzed Creative Commons License 2010.09.04 0 0 5383
"A linuxon (1.6.0_18 jre) ujra forditottam" ez fut rajta. a java -version hazudja.
Előzmény: angyalhentes (5381)
bigzed Creative Commons License 2010.09.04 0 0 5382
talan pont itt, az indexen duzzogott valamelyik forumozo, hogy az rmi egy kalap sz.r, meg a programozo sem tarthatja igazan a kezeben a rendszert, mert az sokat elrejt a hasznaloja elol. most meg mar en is elkeseredtem. dehat ez a cajo framework is az rmi folott van, nem? azzal sem leszek akkor elolrebb.
Előzmény: bigzed (5380)
angyalhentes Creative Commons License 2010.09.04 0 0 5381
Juteszembe, ami elő szokott fordulni linuxon, hogy alapból felrak teljesen fiktív java disztribúciókat, szóval érdemes lenne azt ellenőrizned egy "java -version"-nel, hogy mi is fut akkor, amikor beírod azt, hogy java.
Előzmény: bigzed (5380)
bigzed Creative Commons License 2010.09.04 0 0 5380
az az igazsag, hogy abban bizom, hogy valami orbitalis hulyeseget csinalok, es azert nem muxik a dolog linuxon, mert az nagyon elkeseritene, ha a dolgok a sajat termeszetuknel fogva nem mukodnenek ennyire. rament egy egesz szombatom, pedig abbol olyan keves van :(
Előzmény: angyalhentes (5378)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!