[Java lista] java program folyamatok
bognár attila
attila at netalfa.hu
2007. Jún. 16., Szo, 10:18:53 CEST
> Írtam egy ilyen programot:
> while(true) {
> String s = new String("Helló");
> System.out.println("->" + s);
> }
> Elindítottam, és ez is 16 folyamatot hoz létre alapból, mint a Chat. Néztem
> a heapet netbeans profilerben, és 14 perc után out of memory-val leállt.
> Átírtam ilyenre:
> String s;
> while(true) {
> s = new String("Helló");
> System.out.println("->" + s);
> }
> Így is ugyanaz. Ez miért van?
>
Alapvetően ugyanaz (1. uaz a string objektum, sőt ez is uaz:
System.out.println("->" + "Helló"), 2. ha nem string lenne a gc akkor is
kidobálná, 3. tudtommal ezt kioptimalizálja a fordító/jit - a listán
vannak, akik ebben jobban otthon vannak).
String helyett érdemes lenne mondjuk long-gal is kipróbálni.
És ha nem netbeans-ben futtatod? Esetleg a System.out.println-be írjál
egy kis "belső" statisztikát is (Runtime.freeMemory és totalMemory)
Ennyi a program?
public class Ize extends Thread
{
public void run ()
{
while (true)
{
String s = new String("Helló");
System.out.println("->" + s);
}
}
public static void main (String[] args)
{
new Ize().start();
}
}
>>> fakeDb = true;
>>>
>>> if(fakeDb) {
>>> hallgato = new HallgatoObj();
>>> szerver.lehetsegesHallgatokZarolva = true;
>>>
>
>
>> ez hol lesz false és mi a célja? vagy csak a jövőre vonatkozóan van? valami
>> szinkronizálás mindenesetre nem ártana
>>
> be van zárva a port a szerveren, így otthonról nem érem el, ezért ha true a
> fakeDb akkor nem adatbázishoz kapcsolódik, hanem létrehoz néhány objektumot.
> Tehát egy programfutásnál ez vagy mindig false, vagy mindig true.
>
én a lehetségesHallgatokZarolva változóra gondoltam. csak beállítod
'true'-re, de sehol nem olvasod az értéket. de jelen esetben elvileg
nincs jelentősége.
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20070616/413882c3/attachment-0001.html
További információk a(z) Javalist levelezőlistáról