Thread View: pl.comp.lang.java
2 messages
2 total messages
Started by obi wan firthe kenobi
Wed, 28 Nov 2012 11:29
[n00b] Pyt z Javy
Author: obi wan firthe kenobi
Date: Wed, 28 Nov 2012 11:29
Date: Wed, 28 Nov 2012 11:29
29 lines
2868 bytes
2868 bytes
Mam pytanie dot jawy. Dosyc slabo znam jawe (ale ze jako tako znam tematy z ogolnego programowania to jak trzeba cos tam moge sklecic) i ostatnio sie jej wlasnie przygladam, dokonujac przy tym paru obserwacji (dosyc banalnych zreszta zapewne) powstaje przy tym dla mnie przy okazji tego studiowania javy zasadnicze pytanie : 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'? Tj mam na mysli wszelkie sytuacje gdzie nie przejmuje sie zwalnianiem czegokolwiek (np w danej konkretnej sytuacji mam tablice[][] z pixelami ale zeby to wyswietlic musze to opakowac w image pozniej wyswietlic, poniewaz robie to w kazdej ramce to po prostu tworze nowy image za kazdym razem nie przejmujac sie starym i nie zwalniajac go) podobnie jest z przekazywaniem i robieniem najrozmaitrzej sieczki wrapperow, powiedzmy ze mam jeden oryginalny kawalek danych z pixelami, czy pakujac to w najrozmaitsze obiekty po drodze zeby cos zrobic wyswietlic, zapisac na dysk, itp mam gwarancje ze dane te nie beda topornie kopiowane tylko ze to wszystko beda lekkie operacje? 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
Re: [n00b] Pyt z Javy
Author: 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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads