Название: Определить размер памяти, занимаемый QObject Отправлено: shasoft от Октябрь 15, 2012, 08:46 Можно как-то определить в Qt размер памяти, занимаемой QObject?
Такой вот простой код: Код: QObject oTest; Однако в отладчике можно увидеть, что oTest имеет ещё кучу разных свойств из чего можно сделать вывод, что занимает он далеко не 8 байт. Как-то можно оценить занимаемую им память? Название: Re: Определить размер памяти, занимаемый QObject Отправлено: ssoft от Октябрь 15, 2012, 09:39 QObject использует в своей реализации pimpl технологию, это значит, что внутри него есть всего лишь указатель (4 байта в 32-bit системах) на реальные данные + 4 байта на виртуализацию.
Даже если добраться до внутреннего представления QObject окажется, что он использует контейнеры и др. классы, которые в свою очередь тоже используют pimpl. Поэтому точный размер, занимаемый QObject через sizeof не определить. Не понятно зачем это необходимо. Название: Re: Определить размер памяти, занимаемый QObject Отправлено: shasoft от Октябрь 15, 2012, 10:02 Сделал объекты, доступные из скрипта. Но этих объектов создается очень много, соответственно жрет много памяти. Хотел прикинуть, сколько каждый объект занимает.
Вообще интересен подход в оценке используемой памяти. Было бы интересно узнать размер используемой памяти для QHash, QMap, QVector. А то у меня 100.000 объектов, в которых в каждом QHash. Возможно, что при использовании одного общего контейнера скорость приемлемой, зато количество занимаемой памяти упадет в N-надцать раз. Название: Re: Определить размер памяти, занимаемый QObject Отправлено: Igors от Октябрь 15, 2012, 10:07 Как-то можно оценить занимаемую им память? Код
Название: Re: Определить размер памяти, занимаемый QObject Отправлено: Igors от Октябрь 15, 2012, 10:20 Вообще интересен подход в оценке используемой памяти. Было бы интересно узнать размер используемой памяти для QHash, QMap, QVector. А то у меня 100.000 объектов, в которых в каждом QHash. Возможно, что при использовании одного общего контейнера скорость приемлемой, зато количество занимаемой памяти упадет в N-надцать раз. С контейнерами - это уже др вопрос, здесь размер самого "экземпляра" мало что говорит. Реально размер определяется пулом который контейнер резервирует чтобы не бегать с выделением памяти для каждого элемента. В принципе любой контейнер - удовольствие дорогое и держвть 100k QHash просто неграмотно :)Ну ничего, приятно видеть пытливого молодого человека :) Название: Re: Определить размер памяти, занимаемый QObject Отправлено: shasoft от Октябрь 15, 2012, 10:24 Какой-то сомнительный способ.
С QObject дает результат 28. При этом если вместо QObject написать свой объект, который наследует QObject, то результат уже 12. Т.е. снаследовал несколько раз и при создании получаешь уже свободный кусок памяти. :) Метод предполагает, что память выделяется последовательно, хотя это может быть и не так. В любом случае спасибо за идею. До этого с Qt не сталкивался, поэтому такие вопросы про память. Да и сами контейнеры в таких количествах не создавал. Поэтому лучше спросить, прежде чем самому искать. |