Article View: pl.comp.lang.java
Article #153670Re: [n00b] Pyt z Javy
From: TrzyLinie
Date: Wed, 28 Nov 2012 12:32
Date: Wed, 28 Nov 2012 12:32
56 lines
3737 bytes
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-mailReferences:
<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