Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako resetovati streamove socketa u javi

[es] :: Java :: Kako resetovati streamove socketa u javi

[ Pregleda: 1886 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon Kako resetovati streamove socketa u javi30.08.2009. u 09:05 - pre 178 meseci
Pisem program koji za mreznu komunikaciju koristi sockete,i desava mi se da u jenom tremutku dodje do OutOfMemoryException-a.
Do ovoga dolazi jer se podatci koji se salju preko streamova kesiraju podatke i da bi ih periodicno trebalo prazniti.Problem je to sto ja ne znam kako da ispraznim
stream-ove.Jedno resenje je da zatvorim streamove pa da ih ponovo otvorim ali se nadam da ima nesto pametnije
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
95.180.24.*

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: Kako resetovati streamove socketa u javi30.08.2009. u 10:23 - pre 178 meseci
InputStream ima metodu reset koja služi baš za to što tebi treba.

Pored punjenja memorije postoji još jedan problem na koji treba obratiti pažnju. Object input/output stream za keširanje objekata koristi hash mapu, a to znači da poredi objekte korišćenjem metoda hashCode i equals.
Evo jednog primera, ukoliko imaš sledeću klasu
Code:

public class Person {

    private Integer id;
    private String name;
    
    @Override
    public int hashCode() {
        return (id == null) ? 0 : id.hashCode();
    }
    
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }
}


Poređenje Person-a se obavlja korišćenjem njihovi id-jeva. Ukoliko napraviš jednu instancu Person-a i pošalješ je kroz stream ta instanca će biti iskeširana. Ukoliko tom Person-u promeniš "name" i ponovo pošalješ ceo objekat, na output strani će se pojaviti stara, keširana instanca bez promenjene vrednosti imena.
 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
212.200.65.*



+1 Profil

icon Re: Kako resetovati streamove socketa u javi30.08.2009. u 13:16 - pre 178 meseci
E ovo za kesiranje sam znao,ali ovo za reset sam mislio da samo vrati pokaivac na pocetak stream-a a da nista ne brise.

Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

[es] :: Java :: Kako resetovati streamove socketa u javi

[ Pregleda: 1886 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.