Dziwne problemy Java dotyczące GC i wyjątków

0

Ktoś mi zadał dziwne pytania dotyczące Java:
#jak zapewnić, by pole klasy (typ referencyjny) na 100% zostało usunięte przez gc razem z obiektem danej klasy? Wydawało mi się, że jeśli pole klasy jest jedyną referencją do obiektu dziecka, to to wystarczy, by dziecko zostało usunięte razem z rodzicem.
#jak stworzyć klasę, która może być rzucana jako wyjątek, jeśli dziedziczy ona po innej zwykłej klasie nie dziedziczącej po klasie java.lang.Throwable?

0
  1. Na mój gust to zalezy od implementacji GC, ale tak czy siak ty fizycznie nie masz wpływu na to co i kiedy zostanie usunięte przez GC.

The Throwable class is the superclass of all errors and exceptions in the Java language. Only objects that are instances of this class (or one of its subclasses) are thrown by the Java Virtual Machine or can be thrown by the Java throw statement. Similarly, only this class or one of its subclasses can be the argument type in a catch clause

0

Ad 2.
A co będzie jeśli zaimplementujemy wszystkie metody klasy Throwable i dokonamy rzutowania naszego obiektu na Throwable ? Rzutowanie się niepowiedzie z powodu niepoprawnej hierarchii dziedziczenia ? Czy też może się powiedzie na zasadzie "zgodności interfejsów" ?

0

ad 1. jeżeli używasz g1 jako GC to tak się stanie (fragmenty drzewa niemające referencji gdzie indziej trzyma w ramach jednego bloku pamięci i jak coś to zwalnia cały blok). Jeżeli używasz CMS (stary GC) to będzie to wyglądać troszkę inaczej. Generalnie wpływu na to dużego nie masz.
ad 2. Metoda na około to własna klasa wyjątku przyjmująca w konstruktorze obiekt klasy, która cię interesuje.

0

Jako, że Java używałem niewiele, to na pierwsze dałem właśnie odpowiedź, że nie mamy nad tym kontroli, ale gość cisnął, wiec strzeliłem, że z klasą wewnętrzna załatwi sprawę. Ta odpowiedź częściowo go zadowoliła, że to niby jest jeden ze sposobów, ale pytał jeszcze inne roziązanie.
Przeszukałem internet i nic. Coś mam wrażenie, że to są wymysły gościa.

Z drugim założyłem, że jest jakiś interfejs Throwable i jego implementacja rozwiąże, problem, ale z tego co widzę, to jest to mission impossible.

1 użytkowników online, w tym zalogowanych: 0, gości: 1