Re[8]: Нетривиальные проблемы с GC
От: remark Россия http://www.1024cores.net/
Дата: 28.09.07 13:54
Оценка: +2 :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, remark, Вы писали:


VD>>>ОК. Тогда зачем вся эта тема? Ну, какова ее цель? Ведь конкретные люди сталкивались с конкретными проблемами и при работе с кучей С/С++. Почему ты не посвятил свою тему этому?


R>>А почему я не посвятил свою тему арбузам? Многим бы было интересно.

R>>А почему ты не посвящаешь свои темы организации кэшей современных процессоров? Мне было бы интересно!
R>>Или тут можно постить только по квотам от тебя?


VD>Так ответ на мой вопрос будет? Или дальше продолжишь заниматься демагогией?


Я не посвятил свой пост проблемам с кучей С/С++, просто потому что я посвятил свой пост другой теме. А посвящать посты всему я просто не могу.



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[6]: Нетривиальные проблемы с GC
От: Константин Л. Франция  
Дата: 28.09.07 14:17
Оценка: +1
Здравствуйте, VladD2, Вы писали:

[]

VD>ОК. Тогда зачем вся эта тема? Ну, какова ее цель? Ведь конкретные люди сталкивались с конкретными проблемами и при работе с кучей С/С++. Почему ты не посвятил свою тему этому?


Про проблемы с кучей с++ написано уже достаточно. А вот про проблемы с гц видимо не очень. Про гц принято писать, в основном, только в радужных тонах (только не тыкай меня в свою статью, где об этих неприятных эффектах упоминается).
Re: Нетривиальные проблемы с GC
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 01.11.07 11:25
Оценка: 11 (1)
Здравствуйте, remark

Вот еще тебе в копилку свеженький пример: An interesting memory leak in JRuby


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Нетривиальные проблемы с GC
От: remark Россия http://www.1024cores.net/
Дата: 01.11.07 13:59
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, remark


E>Вот еще тебе в копилку свеженький пример: An interesting memory leak in JRuby


Спасибо.
Вывод как я понял следующий. Там были [не очень] неявные ссылки между объектами, которые заставляли зависать в памяти очень большое дерево объектов.

А там ещё в коментах ссылка на ещё одну проблему:
http://tomcopeland.blogs.com/juniordeveloper/2007/09/tracking-down-a.html


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: Нетривиальные проблемы с GC
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.11.07 05:56
Оценка:
Здравствуйте, remark, Вы писали:
R>Спасибо.
R>Вывод как я понял следующий. Там были [не очень] неявные ссылки между объектами, которые заставляли зависать в памяти очень большое дерево объектов.
Я так понял, что проблема близка к знаменитой беде с делегатами в .Net. Позволю себе напомнить, что неаккуратная подписка объекта на событие завешивает его в памяти навсегда.
Прелесть в том, что раз ссылок, кроме делегата, на объект нету, то шансов на отписку ~0.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Нетривиальные проблемы с GC
От: remark Россия http://www.1024cores.net/
Дата: 02.11.07 09:33
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, remark, Вы писали:

R>>Спасибо.
R>>Вывод как я понял следующий. Там были [не очень] неявные ссылки между объектами, которые заставляли зависать в памяти очень большое дерево объектов.
S>Я так понял, что проблема близка к знаменитой беде с делегатами в .Net. Позволю себе напомнить, что неаккуратная подписка объекта на событие завешивает его в памяти навсегда.
S>Прелесть в том, что раз ссылок, кроме делегата, на объект нету, то шансов на отписку ~0.

А можешь пример привести, как можно неаккуратно подписаться на событие.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[5]: Нетривиальные проблемы с GC
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.11.07 10:01
Оценка:
Здравствуйте, remark, Вы писали:

R>А можешь пример привести, как можно неаккуратно подписаться на событие.

Пример можно найти в SVN RSDN@Home двух-трех-летней давности
Обычная штука, к примеру: форма подписывается на уведомления об изменении модели, и при закрытии забывает отписаться. Всё, копец. Закрытые формы копятся и копятся.
R>
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Нетривиальные проблемы с GC
От: alexeiz  
Дата: 03.11.07 03:18
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, remark, Вы писали:


R>>А можешь пример привести, как можно неаккуратно подписаться на событие.

S>Пример можно найти в SVN RSDN@Home двух-трех-летней давности
S>Обычная штука, к примеру: форма подписывается на уведомления об изменении модели, и при закрытии забывает отписаться. Всё, копец. Закрытые формы копятся и копятся.

На слабых ссылках нужно было это делать. Было бы помедленнее, но зато не нужно заботиться от отписывании.
Re[4]: Нетривиальные проблемы с GC
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.11.07 07:53
Оценка:
Здравствуйте, Sinclair, Вы писали:

R>>Вывод как я понял следующий. Там были [не очень] неявные ссылки между объектами, которые заставляли зависать в памяти очень большое дерево объектов.

S>Я так понял, что проблема близка к знаменитой беде с делегатами в .Net.

Не, тут просто баг. Вместо очищения ссылки она запоминается. Даже если бы не было замыкания со ссылками на окружение, то это была бы утечка всё равно. Просто она была бы мизерная и её никто бы не стал искать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Нетривиальные проблемы с GC
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.11.07 03:06
Оценка:
Здравствуйте, alexeiz, Вы писали:
A>На слабых ссылках нужно было это делать. Было бы помедленнее, но зато не нужно заботиться от отписывании.
Есть реализации делегатов на слабых ссылках; но встраивать слабость делегатов в платформу, имхо, спорный вариант.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Нетривиальные проблемы с GC
От: Cyberax Марс  
Дата: 06.11.07 03:40
Оценка: +2
Sinclair wrote:
> A>На слабых ссылках нужно было это делать. Было бы помедленнее, но зато
> не нужно заботиться от отписывании.
> Есть реализации делегатов на слабых ссылках; но встраивать слабость
> делегатов в платформу, имхо, спорный вариант.
Более сильный вариант: встраивать делегаты в платформу — спорный вариант
(ИМХО).
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[9]: Нетривиальные проблемы с GC
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.11.07 03:58
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Более сильный вариант: встраивать делегаты в платформу — спорный вариант
C>(ИМХО).
Я так не думаю. Без поддержки платформы состряпать свои делегаты, мягко говоря, трудно. Вряд ли удастся обеспечить ковариантность, и будут проблемы с быстродействием.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Нетривиальные проблемы с GC
От: Cyberax Марс  
Дата: 06.11.07 09:38
Оценка:
Sinclair wrote:
> C>Более сильный вариант: встраивать делегаты в платформу — спорный вариант
> C>(ИМХО).
> Я так не думаю. Без поддержки платформы состряпать свои делегаты, мягко
> говоря, трудно. Вряд ли удастся обеспечить ковариантность, и будут
> проблемы с быстродействием.
Вполне можно — достаточно иметь ковариантность для интерфейсов. От языка
разве что синтаксический сахар можно было бы добавить.
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re[6]: Нетривиальные проблемы с GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.12.07 10:49
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Пример можно найти в SVN RSDN@Home двух-трех-летней давности

S>Обычная штука, к примеру: форма подписывается на уведомления об изменении модели, и при закрытии забывает отписаться. Всё, копец. Закрытые формы копятся и копятся.

Там все было сложнее. Там был синглтон к событиям которого подписывались. Иначе бы подписчики умерли бы вместе с формой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Нетривиальные проблемы с GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.12.07 10:49
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Есть реализации делегатов на слабых ссылках; но встраивать слабость делегатов в платформу, имхо, спорный вариант.


Я бы сделал более сильное утверждение: Встравивание делегатов в платформу — это ошибка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Нетривиальные проблемы с GC
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.12.07 10:49
Оценка: 5 (1) +3
Здравствуйте, Sinclair, Вы писали:

S>Я так не думаю. Без поддержки платформы состряпать свои делегаты, мягко говоря, трудно. Вряд ли удастся обеспечить ковариантность, и будут проблемы с быстродействием.


Разработчики Немерле и как я понимаю Скала + F# c этим справились.

Тут вопрос в другом даже. Делегаты сами по себе безграмотно спроектированы. В них:
1. Ошибочно заложена поддержка списка фунций, что перебор для большинства применений (кроме событий).
2. Они задают уникальный тип и получается, что два делегата с одной сигнатурой несовместимы между собой.

Вместо делегатов нужно было реализовать функциональный тип. Он должен описываться только сигнатурой и позволять ссылатьс ятолько на одну функцию. Если кому-то нужно создать список ссылок на фунции, то его можно поместить в массив или List<функциональный тип>.
А вот для создания уникальных типов в язык или платформу нужно было бы ввести "строгий" typedef. Типа:
type T1 = int;
T1 a = 1;
int b = a; // Ошибка времени компиляции!

В прочем, вопрос нужно ли было в событиях применять строгие типы тоже очень спорный. Хотя сама фича полезна для усиления контроля типов компилятором, ведь скажем метры и градусы можно легко перепутать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.