Какой из ниже надреза кода более Сбор мусора эффективным с точки зрения временисбор мусора Java против локальной и глобальной переменной с Потокобезопасная
Class Test{...}
Локальная переменная
private void function(){
Test test = new Test();
....
}
Global Переменная
Test test = null;
private void function(){
if(test == null){
test = new Test();
}
}
Пусть Предположим, функция() вызова часто
EDIT
Вы все хорошо. Хорошо ответили. Теперь я пришел к точке,
CASE-1 является более эффективным, чем GC CASE-2, но с другой стороны CASE-1 не поточно. Таким образом, оба имеют за и против
.
Меня больше беспокоят побочные эффекты наличия «глобальной переменной» (для меня это похоже на поле экземпляра). Такие, как потеря безопасности нитей. – Thilo
В сценарии ** Global Variable ** используется lazy-load, что позволяет избежать постоянной переустановки 'test' каждый раз, когда вызывается' function() '. Это также сведёт к минимуму работу, выполняемую сборщиком мусора. С другой стороны, вы застряли бы с экземпляром «Test» в хранящейся памяти, которая была бы пустой тратой, поскольку экземпляр не использовался часто. –
@TimBiegeleisen - вы можете уточнить? – TheLostMind