После чтения книг, занимающихся серфингом в сетях относительно типа ссылок на Java, у меня все еще есть некоторые сомнения (или я, возможно, неправильно интерпретировал концепцию).
Это было бы большой помощью для меня, если бы кто-нибудь уяснил мои сомнения.
Позвольте мне привести пример класса, содержащего переменные класса, переменные экземпляра и локальные переменные.
public class Test {
public static ArrayList<String> listCommon = new ArrayList<String>();
private HashMap<String, String> mapInstance;
public Test() {
mapInstance = new HashMap<String, String>();
}
public void doSomething(String key) {
ArrayList<String> local = new ArrayList<String>();
if(key != null){
local.add(mapInstance.get(key));
}
System.out.println("Value is added in instance Map: ", mapInstance.get(key));
}
}
Мой вопрос:
1. являются listCommon
(статическая переменная) и mapInstance
(переменная экземпляра) Сильная ссылка на сборщик мусора?
2. Является ли переменная local
(определена и используется в методе) Слабая ссылка?
3. Как появилась ссылка Phantom reference и Soft reference?
4. ИЛИ не более 3 понятий недействительны; означает, что Java определяет ссылки только в том случае, если вы явно использовали тип, определенный в пакете java.lang.ref?
Любая помощь будет отличной для меня.