Comments 8
В Objective-C для iOS выше 5.x есть ключевые слова
ну и они-же для объявления свойств
__weak
и __strong
ну и они-же для объявления свойств
@property ( strong ) ...
@property ( weak ) ...
К примеру на Java добавлю, что тип переменных и параметров я бы объявлял с помощью интерфейса:
А не так:
Таким образом можно легко перейти от WeakReference к SoftReference или наоборот, изменив только код конструирования ссылки.
private final Reference<Object> ref;
А не так:
private final WeakReference<Object> ref;
Таким образом можно легко перейти от WeakReference к SoftReference или наоборот, изменив только код конструирования ссылки.
Отдельно не помешает заметить, что в Java for Android политика такая, что SoftReference освобождается сразу же при достижении нуля на счетчике, а не «under memory pressure».
Источник: code.google.com/p/android/issues/detail?id=20015
(были и более старые подобные высказывания от разработчиков, но я уже их не нахожу)
The problem is that the runtime doesn't have enough information on which references to clear and which to keep. Most importantly, the runtime doesn't know what to do when given the choice between clearing a soft reference and growing the heap. You may disagree with Dalvik's policy, but by using soft references you've elected to not be involved in that decision.
Your Android device is not like «regular Java». «Regular Java» applications typically run all by themselves on big machines with plenty of RAM and virtual memory. It's okay for «regular Java» to keep soft references around a long time; for them memory is cheap.
The device in your pocket runs more applications simultaneously using less memory. If Dalvik were to retain more soft references, then the OS would have fewer cached processes and the latency to switch between apps would be greater. The memory needs to come from somewhere.
Источник: code.google.com/p/android/issues/detail?id=20015
(были и более старые подобные высказывания от разработчиков, но я уже их не нахожу)
про c# забыли
В Lua ещё есть слабые ссылки.
Ну в Lua кроме таблиц и нету ничего почти, но да, именно у таблицы можно настроить, чтобы её ключи или значения были слабыми ссылками. При сборке мусора соответствующая пара ключ—значение удаляется из таблицы, насчёт эфемеронов точно не скажу (понятие пока мне не совсем знакомое), а вот на WeakHashMap и Weak*Dictionary оно точно похоже.
Sign up to leave a comment.
Слабые ссылки в различных языках программирования