29.11.2005, 10:23 | #1 |
Участник
|
Размер памяти, занимаемой объектом
Существует ли в Аксапте функция, выдающая размер памяти, занимаемой объектом произвольного типа, переданным в качестве параметра?
|
|
29.11.2005, 11:17 | #2 |
Участник
|
а зачем?
|
|
29.11.2005, 13:54 | #3 |
Участник
|
Цитата:
Сообщение от belugin
а зачем?
|
|
29.11.2005, 13:56 | #4 |
Banned
|
Похоже, не существует. Посмотрите, как задается размер Binary в классе WinAPI. Если же нужно узнать размер сложной структуры, я бы запаковал бы ее в контейнер и посмотрел бы размер контейнера.
Цитата:
Сообщение от belugin
а зачем?
|
|
29.11.2005, 14:05 | #5 |
Участник
|
тоже присоединяюсь к вопросу - зачем?
если посмотреть хочется, то смотрите недокументированный класс HeapCheck Пример использования в Heaplog.getInfo() |
|
29.11.2005, 14:13 | #6 |
Banned
|
Цитата:
Сообщение от mazzy
если посмотреть хочется, то смотрите недокументированный класс HeapCheck Пример использования в Heaplog.getInfo()
|
|
29.11.2005, 14:15 | #7 |
Участник
|
Цитата:
Сообщение от EVGL
Похоже, не существует. Посмотрите, как задается размер Binary в классе WinAPI. Если же нужно узнать размер сложной структуры, я бы запаковал бы ее в контейнер и посмотрел бы размер контейнера.
В общем случае Цитата:
Сообщение от EVGL
HeapCheck имеет много методов. Но ни одного, чтобы посмотреть размер памяти под объект, а не под "блок".
Совершенно верно. Поскольку память в Аксапте (да и в Java-машине) выделяется не под каждый объект. Пусть человек разбирается, если хочется. Может таки разберется и другим рассказывать будет. |
|
29.11.2005, 16:25 | #8 |
Участник
|
Всем спасибо, но времени разбираться с недокументированными классами не было, а типы структур данных уже известны - решил сам набросать метод посчитывающий занимаемую память. Считает для::Container, Date, Integer, Real, String, Array, Struct, Map. Для остальных типов возвратит 0.
PHP код:
|
|
29.11.2005, 16:33 | #9 |
Участник
|
А что это за объект такой RTRTimeAccountProcess?
PS И еще - вы уверены что Axapta не выравнивает данные на границу сегмента?
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 29.11.2005 в 16:36. |
|
29.11.2005, 16:38 | #10 |
Модератор
|
Судя про префиксу - самописный. Ага, коламбус внедренцы, скорее всего Уних с этим строго - не забалуешь. Я предпочитаю суфиксы.
С Уважением, Георгий |
|
29.11.2005, 16:38 | #11 |
Участник
|
Цитата:
Сообщение от SolNik
Всем спасибо, но времени разбираться с недокументированными классами не было, а типы структур данных уже известны - решил сам набросать...
А все из-за документации... Немного критики и предложений: 1. вы ответили не на исходный вопрос "размер памяти, занимаемой объектом", а на другой - "Сколько памяти могут занимать объекты при ваших предположениях". Кроме того, сами предположения требуют пересмотра. Например, непонятно как реально хранится строка - как sz или bsz. 2. Вообще говоря, стоит проверять не только id самого класса, но и id его родителей. Вдруг кто-нибудь от map создаст потомка? Т.е. вместо classIdGet() метод SysDictClass::isSuperClass(...) Разобрались бы с HeapLog. Хоть EVGL и прав - вы не увидите там размер каждого объекта. Но зато очень точно и быстро увидите общий размер памяти, выделенной под различные кучи ... А это как раз то, что вам нужно, насколько я понимаю... |
|
29.11.2005, 17:03 | #12 |
Участник
|
А вопрос далеко не прост...
Sizeof for Java Java Tip 130: Do you know your data size? Особенно страница с результатами измерения |
|
29.11.2005, 17:08 | #13 |
Участник
|
Цитата:
1. вы ответили не на исходный вопрос "размер памяти, занимаемой объектом", а на другой - "Сколько памяти могут занимать объекты при ваших предположениях".
- а как вариант решения такой задачи, который для моего случая вполне подходит. Уверен что есть более красивые решения. По поводу строк - у меня все динамические...не знаю как Аксапта выделяет память для строк фиксированной длины - если резервирует - то функция отработает неверно - но для динамических, я думаю, соответствует кол-ву символов в строке. |
|
29.11.2005, 17:14 | #14 |
Участник
|
вы все-таки почитайте результаты измерения.
ссылка вверху... |
|
29.11.2005, 17:37 | #15 |
Участник
|
http://www.javaworld.com/javaworld/j...tip130-p3.html - и народ еще удивляется, почему жаба жрет столько ресурсов . Интересно - аксаптовые базовые классы столь же прожорливы...
|
|
29.11.2005, 18:03 | #16 |
NavAx
|
Цитата:
Сообщение от SolNik
Интересно - аксаптовые базовые классы столь же прожорливы...
__________________
Isn't it nice when things just work? |
|
29.11.2005, 18:12 | #17 |
Участник
|
...а для этого нужен HeapLog и HeapCheck
программировать не надо |
|