🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153670

Re: [n00b] Pyt z Javy

#153670
From: TrzyLinie
Date: Wed, 28 Nov 2012 12:32
56 lines
3737 bytes
W dniu 2012-11-28 12:29, obi wan firthe kenobi napisał(a):
>   Czy te rozmaite wysokopoziomowe myki tj konkretnie widze na dany moment dwa
>
> 1) rozmaite 'nie zwalnianie' obiektow,
> 2) rozmaite 'przekazywanie' (i wrappowanie) obiektow itp
>
> sa w jawie 'bezpieczne'?

Tak, są bezpieczne. Obiekt, dopóki z programu istnieje do niego referencja,
jest utrzymywany przy życiu. Jeśli odwołanie zniknie - VM może łaskawie
go zniszczyć, jak uzna za stosowne. Kiedy znika referencja?
1. Jak kończy się zakres widoczności obiektu, a w bloku nie został on
"sprzedany" poza blok:
{ Klasa k = new Klasa();
   ...
}
//Tu obiekt jest już niewidoczny, więc można go zaliczyć do śmieci.
2. Można "pomagać" np. zerując referencje, jeśli decydujemy, że obiekt
nie jest już potrzebny (ale to trochę zawracanie gitary...)
Klasa k = new Klasa();
...
k = null;
// Od tego momentu nie ma już odwołania do obiektu, więc znów można go
// zniszczyć jeśli zaistnieje taka potrzeba.

Kiedy VM uznaje za stosowne niszczyć? Gdy brakuje pamięci - wtedy
niszczy śmieci. Jeśli to nie pomoże - pobiera pamięć od systemu operacyjnego
do osiągnięcia limitu (sprawdź opcje -XMs i -XMx). Jeśli i to nie
pomoże - zgłasza OutOfMemoryError i grzecznie dziękuje za współpracę...

> Tj mam na mysli wszelkie sytuacje gdzie nie przejmuje sie zwalnianiem  czegokolwiek

W Javie nawet nie za bardzo masz JAK się przejmować... Wystarczy zachować
symetrię dla wszelkich metod typu open/init - istnieją dla nich jakieś
odpowiedniki typu close/destroy - więc warto pamiętać o ich wywołaniu.
I to wszystko. (-> try-with-resource).

> mam gwarancje ze dane te nie beda topornie kopiowane
> tylko ze to wszystko beda lekkie operacje?

Gwarancji nie masz, że kopiowane nie będą - zajrzyj do źródeł to się
dowiesz - okaże się najczęściej, że nic nie jest kopiowane, bo i po co...
Ale jeśli będą kopiowane - na pewno zostaną zwolnione, gdy VM uzna
za stosowne, po tym, jak przestaną istnieć do nich odwołania z programu.

> tj czy jawie mozna zaufac ze nmie przejmujac sie
> problemem zwalniania i problemem przekazywania i wrappowania poradzi sobie ona tj nie wykona jakichs
> masywnych duplikatow (albo jakichs innych pokrewnych
> zarzynek). mam nadzieje ze moje pytanie jest
> zrozumiale, a jesli nie i jawa moze wykonac taką zarzynkę to prosilbym najlepiej o konkretny przyklad takiej zarzyny ze strony jawy. tnx

Można zaufać :) Zresztą nie masz wyboru, o ile jesteś zmuszony używać
Javy...

-- 
TrzyLinie
Technical Details
Message-ID: <k95088$4q8$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-2.ams.xsnews.nl!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
References: <b86bfff2-ca41-422e-8ddd-86241c6df30d@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!feed.xsnews.nl!border-2.ams.xsnews.nl!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From: TrzyLinie <trzyKASUJlinie@USUNo2.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: [n00b] Pyt z Javy
Date: Wed, 28 Nov 2012 13:32:07 +0100
Organization: A noiseless patient Spider
Lines: 56
Message-ID: <k95088$4q8$1@dont-email.me>
References: <b86bfff2-ca41-422e-8ddd-86241c6df30d@googlegroups.com>
Mime-Version: 1.0
Injection-Date: Wed, 28 Nov 2012 12:32:09 +0000 (UTC)
Injection-Info: mx04.eternal-september.org; posting-host="4ef2f1bd6c5e491f7cd68a07a5cba6df"; logging-data="4936"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18nK17uZzqSTzZFcubwxLMB0RgAfQWDLLY="
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To: <b86bfff2-ca41-422e-8ddd-86241c6df30d@googlegroups.com>
Cancel-Lock: sha1:VgoD2/T6+mC21bU0hl31gIJ0LUg=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit