Здравствуйте, Cyberax, Вы писали: C>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать.
Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
C>>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать. S>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
Как куда? В invalid memory, как обычно. Поэтому, выгружать надо только когда убедился, что не осталось ссылок на старую библиотеку.
Ну или загружать новую библиотеку параллельно старой.
Здравствуйте, Cyberax, Вы писали: S>>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен. C>Как куда? В invalid memory, как обычно. Поэтому, выгружать надо только когда убедился, что не осталось ссылок на старую библиотеку. C>Ну или загружать новую библиотеку параллельно старой.
То есть всё то же самое. Хотя и можно нагнуться и сделать late binding, опасностей от этого будет больше, чем бенефитов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Cyberax, Вы писали: C>>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать. S>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
А куда в яве указывают? Там же без проблем можно отдельные классы загружать.
Среда управляемая. Все ссылки известны. Технических проблем проверить отсутствие ссылок на типы из старой сборки нет. Так что это какая-то недоработка в CLR. В Яве такое работает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: VD>А куда в яве указывают? Там же без проблем можно отдельные классы загружать.
Выгрузить класс, у которого есть живые экземпляры, нельзя.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
VD>>А куда в яве указывают? Там же без проблем можно отдельные классы загружать. S>Выгрузить класс, у которого есть живые экземпляры, нельзя.
Это и не является проблемой. Главное, что нет нужды выгружать целое приложение только потому, что нужно заменить версию класса. Так что это скорее недоработка CLR.
В прочем, лично меня бы очень устроила бы реализация SIP-ов из Сингулярити.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.