Wyrzucanie elementów bezużytecznych (GC) to forma automatycznego zarządzania pamięcią, która próbuje odzyskać śmieci lub pamięć zajmowaną przez obiekty, które nie są już używane przez program.
Jeśli mam następujący kod: MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null; Czy pClass będzie zbierany śmieci? Czy też będzie się kręcił, wciąż odpalając wydarzenia, gdy tylko się pojawią? Czy muszę wykonać następujące czynności, aby umożliwić zbieranie śmieci? MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent …
Rozważ poniższy kod: public class Class1 { public static int c; ~Class1() { c++; } } public class Class2 { public static void Main() { { var c1=new Class1(); //c1=null; // If this line is not commented out, at the Console.WriteLine call, it prints 1. } GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine(Class1.c); // …
Zarejestrowałem następujący błąd przeglądarki Chrome , który doprowadził do wielu poważnych i nieoczywistych wycieków pamięci w moim kodzie: (Te wyniki wykorzystują profiler pamięci Chrome Dev Tools , który uruchamia GC, a następnie tworzy migawkę sterty wszystkiego, co nie zostało zebrane). W poniższym kodzie someClassinstancja jest odśmiecana (dobra): var someClass = …
Widzimy wiele TimeoutExceptionsw GcWatcher.finalize, BinderProxy.finalize, i PlainSocketImpl.finalize. Ponad 90% z nich dzieje się na Androidzie 4.3. Otrzymujemy raporty od Crittercism od użytkowników w terenie. Błąd jest odmianą: „ com.android.internal.BinderInternal$GcWatcher.finalize() timed out after 10 seconds” java.util.concurrent.TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds at android.os.BinderProxy.destroy(Native Method) at android.os.BinderProxy.finalize(Binder.java:459) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170) …
Ogólna rada jest taka, że nie powinieneś wywoływać GC.Collectz kodu, ale jakie są wyjątki od tej reguły? Przychodzi mi na myśl tylko kilka bardzo konkretnych przypadków, w których wymuszenie zbierania elementów bezużytecznych może mieć sens. Przykładem, który przychodzi na myśl, jest służba, która budzi się co jakiś czas, wykonuje jakieś …
Z mojego zrozumienia, odśmiecanie pamięci w Javie czyści niektóre obiekty, jeśli nic innego nie wskazuje na ten obiekt. Moje pytanie brzmi, co się stanie, jeśli mamy coś takiego: class Node { public object value; public Node next; public Node(object o, Node n) { value = 0; next = n;} } …
Szukałem, ale nie rozumiałem zbyt dobrze tych trzech pojęć. Kiedy muszę używać alokacji dynamicznej (w stercie) i jaka jest jej prawdziwa zaleta? Jakie są problemy ze statowaniem i stosem? Czy mogę napisać całą aplikację bez przydzielania zmiennych w stercie? Słyszałem, że inne języki zawierają "garbage collector", więc nie musisz się …
W Pythonie, jeśli otworzysz plik bez wywołania close()lub zamkniesz plik, ale nie używasz try- finallylub instrukcji " with", czy to jest problem? A może jako praktyka kodowania wystarczy polegać na wyrzucaniu elementów bezużytecznych w Pythonie, aby zamknąć wszystkie pliki? Na przykład, jeśli to zrobi: for line in open("filename"): # ... …
Czy istnieje sposób na zwolnienie pamięci w Javie, podobny do free()funkcji C ? A może ustawienie obiektu na wartość null i poleganie na GC to jedyna opcja?
W moich zajęciach implementuję IDisposable w następujący sposób: public class User : IDisposable { public int id { get; protected set; } public string name { get; protected set; } public string pass { get; protected set; } public User(int UserID) { id = UserID; } public User(string Username, string …
Zacznij od tych prostych zajęć ... Powiedzmy, że mam prosty zestaw klas, taki jak ten: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool …
Zamknięte. To pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 5 lat temu . Popraw to pytanie Szukam dokumentów, które szczegółowo opisują, jak działa wyrzucanie elementów bezużytecznych w Pythonie. Interesuje mnie, co jest …
Opracowujemy program, który odbiera i przekazuje dalej „wiadomości”, zachowując tymczasową historię tych wiadomości, aby na żądanie mógł przekazać historię wiadomości. Wiadomości są identyfikowane numerycznie, zwykle mają rozmiar około 1 kilobajta i musimy przechowywać setki tysięcy takich wiadomości. Chcemy zoptymalizować ten program pod kątem opóźnienia: czas między wysłaniem a odebraniem wiadomości …
Kiedy uruchamiam „git gui”, pojawia się wyskakujące okienko z napisem To repozytorium zawiera obecnie około 1500 luźnych obiektów. Następnie sugeruje kompresję bazy danych. Robiłem to już wcześniej i zmniejsza to liczbę luźnych obiektów do około 250, ale to nie blokuje wyskakującego okienka. Ponowne kompresowanie nie zmienia liczby luźnych obiektów. Nasz …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.