Цитата: Об этом нужно говорить с цифрами в руках, т.е. делать многократное профилирование и выяснение действительно узких мест. Может статься, что GC окажется не при делах. Ну и ART несет некоторые изменения для GC.
Не надо ляля. Ручное управление памятью бесспорно быстрее и эффективнее GC, вопрос только - насколько? Чем сложнее приложение, чем больше оно требует ресурсов, тем менее приемлем GC.
Знаете ли вы хотя бы один подобный проект, на платформе GC, у которого бы не было проблем с отзывчивостью или скоростью? Я - не знаю.
Доходит до абсурда, тот же FF - у него вроде GC, но не только медленный и заикается, так еще и память у него течет пропадая.
Цитата: Идея как раз красивая. Подсчет ссылок более проблематичен
Чем?
Тем, чтобы необходимо следить за циркулярными референсами?
Цитата: слабые ссылки в глобальном списке это - рукалицо.
С использованием слабых ссылок, мы уходим от проблемы утечки, но приходим к нуль-референс угрозе, когда слабая ссылка ненароком не обнулилась.
Лекарство хуже болезни.
Подсчет ссылок лишь подспорье для ручного управления памятью, а вовсе не средство для абстракции от этой задачи.
А решение для абстракции - именно достижимость. Интересно, много ли пройдет времени, когда они додумаются скомбинировать эти подходы: делать основную работу
подсчетом сильных ссылок, а в фоне эвристиками на основании прекомпилированных данных статического анализа исходного кода, искать кольца --
алгоритмом достижимости либо зачетом ссылок в кольце (когда проверяется гипотеза, что удаление одной структуры влечет удаление всего кольца).
Добавлено: Цитата: У самой платформы скорее всего есть, на уровне шарпа возможно нет. Например FPC умеет компилировать под JVM - платформу с управляемой памятью и GC - и при этом работают низкоуровневые трюки с указателями и управлением памятью.
разумеется. Память - это ведь просто массив, только индексируется он не с нуля, как привыкли скобкокропатели. В рамках этого массива можно организовать менеджер кучи - задача популярная у нас, паскалистов.
Проблема в том, что Шарп и Ява не дают возможности хранить нетривиальные типы в произвольных областях. Это вам не кресты, в которых можно как угодно переопределить оператор new.
Добавлено: Цитата:
А в Delphi можно коммитить?
Конечно! Не в компилятор, конечно, но на самом деле туча возможностей, от препроцессинга кода до написания хороших базовых библиотек на замену FMX.
А можно просто написать хороший учебник по Delphi
вот например
в
статье викиверситета мой вклад больше половины. Мелочь, но если бы нас было 20-100 человек, учебник был бы быстро написан.