Pytania otagowane jako weak-references

Słabe odniesienie to takie, które nie rości sobie prawa własności. Słabe odwołanie zachowuje odniesienie do danego obiektu, gdy znajduje się on w pamięci, ale nie uniemożliwia systemowi zarządzania pamięcią odzyskania skojarzonej pamięci, gdy obiekt, do którego się odwołuje, nie jest już potrzebny. Wiele języków obsługuje lub obsługuje różne poziomy słabych odwołań, takie jak Swift, Objective-C, Java, C #, Python, Perl i Lisp.


6
Zawsze przekazujesz słabe odniesienie do siebie do bloku w ARC?
Jestem trochę zdezorientowany co do użycia bloku w Objective-C. Obecnie używam ARC i mam dość dużo bloków w mojej aplikacji, obecnie zawsze odnoszących się do selfzamiast jej słabego odniesienia. Czy może to być przyczyną zatrzymania selfi zablokowania bloków przed zwolnieniem? Pytanie brzmi: czy zawsze powinienem używać weakodniesienia selfw bloku? -(void)handleNewerData:(NSArray …





10
Kiedy użyłbyś WeakHashMap lub WeakReference?
Użycie słabych referencji jest czymś, czego nigdy nie widziałem implementacji, więc próbuję dowiedzieć się, jaki jest ich przypadek użycia i jak ta implementacja będzie działać. Kiedy musiałeś użyć WeakHashMaplub WeakReferencei jak był używany?


4
Zrozumienie klas referencyjnych języka Java: SoftReference, WeakReference i PhantomReference
Czy ktoś może wyjaśnić różnicę między trzema klasami odniesienia (lub zamieścić link do ładnego wyjaśnienia)? SoftReference> WeakReference> PhantomReference, Ale kiedy użyłbym każdy? Dlaczego jest, WeakHashMapale nie ma SoftHashMaplub PhantomHashMap? A jeśli użyję następującego kodu ... WeakReference<String> ref = new WeakReference<String>("Hello!"); if (ref != null) { // ref can get collected …

4
Jaka jest różnica między odwołaniem __weak a __block?
Czytam dokumentację Xcode i jest coś, co mnie zastanawia: __block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; Z dokumentacji skopiowano: Blok stanowi silne odniesienie do przechwytywanych zmiennych. Jeśli używasz selfw bloku, blok tworzy silne odniesienie do bloku self, więc jeśli selfma również silne odniesienie do bloku (co …

2
OutOfMemoryException pomimo użycia WeakHashMap
Jeśli nie zadzwonisz System.gc(), system zgłosi wyjątek OutOfMemoryException. Nie wiem, dlaczego muszę dzwonić System.gc()wprost; JVM powinien się nazywać gc(), prawda? Proszę doradź. Oto mój kod testowy: public static void main(String[] args) throws InterruptedException { WeakHashMap<String, int[]> hm = new WeakHashMap<>(); int i = 0; while(true) { Thread.sleep(1000); i++; String key …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.