How the command whos works

조회 수: 16 (최근 30일)
Anna
Anna 2020년 5월 7일
댓글: Steven Lord 2020년 5월 11일
I wonder how the command whos works. I have found:
Memory Usage Reported By the whos Function. The whos function displays the amount of memory consumed by any variable. For reasons of simplicity, whos reports only the memory used to store the actual data. It does not report storage for the array header, for example.
When I campute the memory used, for example, by a structure, it seems to me that head is included in the computation. For example, the formula for memory used structure array is fields x ((112 x array elements) + 64) + data that includes header. This memory corresponds exactly to the quantity in bytes given by the command whos.
I should conclude that whos gives the amount of memory including header. Where am I wrong?
  댓글 수: 3
Anna
Anna 2020년 5월 8일
I find in the documentation "How Matlab Allocates Memory" (https://se.mathworks.com/help/matlab/matlab_prog/memory-allocation.html#brh72ex-14) for release 2020a. That's why I thought that it was actual.
Steven Lord
Steven Lord 2020년 5월 11일
That page has at least one piece of out-of-date information on it. Complex arrays are no longer stored as separate pieces as of release R2018a. I'll report that to the documentation staff.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2020년 5월 8일
This memory corresponds exactly to the quantity in bytes given by the command whos.
However you have to add to that the header size to hold information about the variable.
>> abc = 0
abc =
0
>> whos abc
Name Size Bytes Class Attributes
abc 1x1 8 double
abc is a double precision variable with one entry, and each double precision value needs 8 bytes. 1 row * 1 column * 8 bytes per entry = 8 bytes.
But storage is also occupied to hold the information that abc is 1 x 1, and that it is class double, and that it is not complex-valued, and that it is not global. whos does not report about that space.
  댓글 수: 1
Anna
Anna 2020년 5월 11일
Thank you for your answer! If I understand correct it is two different kind of headers. One is the header, as you say, to hold information of the variableand onterh is the header of the structure (that is includes in the whos command).

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Performance and Memory에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by