🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#153671
Author: obi wan firthe kenobi
Date: Wed, 28 Nov 2012 11:29
29 lines
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
#153670
Author: 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
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