Klasa składa się zwykle z zmiennych członkowskich metod: &. Kiedy tworzymy instancję klasy, pamięć jest alokowana dla zmiennych członkowskich klasy. Czy metody członkowskie również zajmują pamięć? Gdzie są przechowywane te metody?Czy członkowie klasy zajmują pamięć?
Odpowiedz
że mamy następujące klasy:
public class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
public string SayName()
{
string hello = "Hello! My name is ";
return hello + name;
}
}
Person p = new Person("John");
string yourName = p.SayName();
Funkcja SayName()
idzie na Call Stack
i przedmiot Person p
i jego właściwości (Name
) pozostanie w pamięci, aż Garbage Collection
przychodzi i czyści go.
Pod względem pamięci powinieneś bardziej zainteresować się polami instancji (właściwościami) obiektu, ilością obiektów, z którymi masz do czynienia, a także, jeśli Twój obiekt ma jakiś czas Reader
lub Connection
. Jeśli Twój obiekt to Reader
lub Connection
, musisz wziąć pod uwagę instrukcję using
.
Pseudo-kod:
using(DatabaseConnection dbConn = new DatabaseConnection()
{
// Process your calls and data
}
// The object is Disposable and it's resources are cleared
"Zmienne wewnątrz SayName(), które cześć, pozostaniesz w pamięci tylko wtedy, gdy funkcja jest w zasięgu, więc gdy funkcja się zakończy, zmienna nie będzie już w pamięci. " Nie do końca prawda, GC może je zebrać, gdy tylko odniesienie nie będzie już potrzebne (i obejmuje to "ten"!) – porges
Tak. To prawda. Sądzę, że powinienem był uczynić to bardziej jasnym pod względem dostępu. –
"jakiś czas [sic] z' Reader' lub 'Connection'" - po prostu generalizacja do 'IDisposable' jest prawdopodobnie bardziej przejrzysta, IMO –
Klasa jest po prostu niebieski wydruku, nie zajmuje żadnego miejsca tak długo, jak zmienna klasy typu nie został zdefiniowany. Po zdefiniowaniu obiektu/instancji klasy typów członek klasy zajmie trochę miejsca w pamięci. Rozmiar instancji jest równy sumie rozmiaru członków zdefiniowanych w klasie.
- 1. Czy plasterki tabeli zajmują pamięć w R?
- 2. Czy statyczne elementy klasy zajmują pamięć, jeśli nie utworzono żadnego obiektu tej klasy?
- 3. Członkowie klasy z prefiksem (_)
- 4. Członkowie i metody klasy PHP
- 5. Niejednoznaczni członkowie klasy w vb.net
- 6. Dynamiczne vs non-dynamiczny członkowie klasy
- 7. Czy członkowie klasy tworzą instancję, gdy tworzona jest klasa?
- 8. Czy członkowie ci mają nieokreślone zamówienie?
- 9. Czy członkowie tablicy constexpr kompilują stałe czasowe?
- 10. OpenGL: Dlaczego tekstury kwadratowe zajmują mniej pamięci?
- 11. zwiększającego członkowie struct
- 12. Czy lepiej używać funkcji statycznych, jeśli nie są potrzebni członkowie klasy?
- 13. Czy pamięć UIWebView wycieka?
- 14. Czy odniesienia do obiektów zajmują dodatkowe miejsce w pamięci?
- 15. pytanie początkowe oop: czy konstruktorzy zajmują miejsce gettera?
- 16. członkowie enum typu Int32
- 17. Enum.Parse powracający nieoczekiwane członkowie
- 18. Członkowie struktury Dirent
- 19. Nielegalni Członkowie TPropInfo
- 20. Czy metody klasy zwiększają wielkość instancji klasy?
- 21. C++: Inicjalizacja Kolejność danych klas Członkowie
- 22. c Cel - statyczne członkowie i stałe
- 23. jak zainicjować członkowie Przejdź struct
- 24. Kotwiczenie - dwa elementy zajmują połowę panelu każdy
- 25. Czy ARC zwalnia pamięć malloc'ed?
- 26. Czy Android obsługuje pamięć wirtualną
- 27. Czy można częściowo zwolnić pamięć?
- 28. Czy pamięć lokalna jest wolniejsza niż pamięć współdzielona w CUDA?
- 29. Czy AppCache = Pamięć podręczna aplikacji = Pamięć lokalna magazynu WWW?
- 30. Czy członkowie struktury C++ są domyślnie inicjowani na 0?
Wdrożenia metod zajmują pamięć według typu (i myślę, że jest to udoskonalenie za pomocą generycznych?), Ale to * nie * zwiększa na instancję obiektu. Na przykład. 'obj.GetType()' zwraca typ reprezentujący wymienione metody (i wiele innych rzeczy). Zmienne (instancja) * są oczywiście pojedynczymi instancjami. –
@ pst, po tak dobrej odpowiedzi jako komentarz? –
@AlexeiLevenkov robi dobry punkt. Zdecydowanie głosowałbym na to i sam odpowiedziałem na to pytanie, z czym uważam całkiem przyzwoitą odpowiedź. –