![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 28.09.2007 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że w PHP generalnie nie ma konieczności jawnego definiowania destruktorów obiektu, chyba, że chce się, żeby coś "na do widzenia" zrobiły, pamięć gdzie się tylko da jest automatycznie zwalniana, ale czy na pewno?
Powiedzmy, że mam wewnątrz metody coś takiego: $x = new krowa(); ..... return $x->wynik; Powiedzmy, że krowa to krowiasty obiekt, zawierający sporo danych. W mojej metodzie interesuje mnie tylko jedna właściwość tego obiektu, którą zwracam. Po każdym return $x->wynik pamięć obiektu jest zwalniana, prawda? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Nie wiem na ile dziala "gb" w php potestuj sobie.
Jesli jednak nie ufasz to poprostu uzyj destruktor i tyle w klasie ktora jest "krowiasta". -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Samo return $x->wynik pamięci nie zwolni. Możesz jawnie zwalniać pamięć poprzez unset($x); ale w tym przypadku, kiedy zwracasz coś z metody, sposób ten się nie sprawdzi. Napisz może, do czego zmierzasz, bo - powiedzmy - "krowiasty obiekt" mnie zaciekawił
![]() -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
PHP używa licznika referencji do określania czy pamięć należy zwolnić czy nie. unset usuwa jedynie referencję, a sam obiekt znika dopiero wtedy, gdy usunięta zostanie ostatnia. Wersje PHP poniżej 5.3.0 nie potrafią wykrywać cykli, tzn. obiekt A wskazuje na B, B na A, lecz do żadnego z nich nie ma dostępu z reszty skryptu. Dopiero najnowsze PHP potrafi się tym zająć, choć można to wyłączyć, a ponadto na bugtrackerze są zgłoszone jakieś niepotwierdzone przez twórców błędy o wyciekach pamięci. Osobiście skłaniam się ku temu, że jakieś wycieki tam są, bo to niemożliwe jest, żeby po wyczyszczeniu ilość zajętej pamięci... rosła.
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 9 Dołączył: 12.11.2005 Skąd: ze wnowu?! Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes. Not just a suggestion, if you ask the question Then its always yes, yeah! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 17:57 |