29.09.2009, 15:37 | #1 |
Участник
|
usageCount в Ax2009
Запуск тестового джобика из документации (ссылка):
X++: static void Object_UsageCount(Args _args) { Object objA = new Object(); Object objB; ; print objA.usageCount(); // Prints 1. objB = objA; // objB is a reference to objA. print objA.usageCount(); // prints 2 pause; } При запуске этого же кода в Ax2009 рисуются "2" и "3". Это только у меня так? )) |
|
29.09.2009, 18:33 | #2 |
Участник
|
У меня так же.
Могу предположить, что одно соединение при создании отводится сборщику мусора. Еще не смотрел, но похоже в 2009-м что-то подредактировали в нем. По крайней мере было бы логично при создании объекта сохранять указатель на него в списке. И через определенное время опрашивать список на предмет usageCount(). Если кол-во соединений=1 (то есть только сам сборщик), то удалять из памяти. Возможно, раньше usageCount() возвращал на 1 меньше, чтобы скрыть лишнее соединение. Это только мое предположение. Просто фантазии Но если я хоть частично прав, то не факт, что и дальше эта фунция будет возвращать такое количество. ТО есть могут снова начать скрывать лишнее соединение. |
|
30.09.2009, 08:53 | #3 |
Участник
|
Не похоже на сборщик мусора, поскольку, как выяснилось, этот глюк не распространяется на наследников Object. На мой взгляд, выявленная "нестыковка" нигде не должна приводить к ошибочным ситуациям, поскольку мне не позволяет фантазия придумать ситуацию, когда бы в коде использовался метод usageCount "чистого" Object.
|
|
30.09.2009, 09:13 | #4 |
Участник
|
|
|
30.09.2009, 09:31 | #5 |
Участник
|
Переменная типа Object может ссылаться на экземпляр любого класса, что используется очень часто по всей системе. Думаю, что если бы Object был абстрактным, то таких присваиваний нельзя бы было производить.
|
|
30.09.2009, 09:48 | #6 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: NoTimeToCry (1). |
30.09.2009, 10:15 | #7 |
Участник
|
Скорее всего, да, я не прав. На обычных классах такое прокатывает, но Object - системный, и быть может (мое дикое предположение) у него свои есть особенности.
|
|
27.06.2012, 17:00 | #8 |
Участник
|
похоже, что это странное поведение метода usageCount() распростроняется на все системные классы , наследуемые от Оbject (проверил на BinData, Binary, TextIO).
Интересно, а в AX 2012 эффект сохранился? |
|
27.06.2012, 17:09 | #9 |
Axapta
|
Сохранился.
|
|
27.06.2012, 17:22 | #10 |
Участник
|
И некорректный пример в документации сохранился http://msdn.microsoft.com/en-us/libr...ect.usagecount (зато адрес какой красивый)
Не красят такие противоречия, не красят |
|