消息窗口中的内存占用数据是什么意思?
每次生成代码时,都会在消息窗口中显示内存占用的数据。 下面解释使用的术语。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5UNNRlT41kaOpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3UTN5EDMygTMwITMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Size of generated code
所有代码段的总和。
Size of global data
全局数据的大小指示全局变量占用的整个内存。 除非在全局变量区域中映射了输入或输出,否则不考虑输入和输出。
Total allocated memory size
包含整个分配的内存,包括增量编译或在线更改引起的间隙。 此外,该区域还包含为在线更改保留的内存,暂时仍未使用,即它不包含代码和数据。占用的内存对应于Highest used address。
Highest used address
这是存储器范围内的最高占用地址。 首次编译时,考虑到对齐方式(通常为8个字节),内存地址以升序分配给变量。 已使用的最高地址大约对应于已使用的内存。
Largest contiguous memory gap
在线更改时,内存仅用于新变量和新代码。先前已删除的变量和代码占用的内存被释放。这可能会导致内存不足。 在进行许多在线更改之后,内存可能会变得碎片化,即,创建了许多无法再使用的小间隙。
最大的连续存储间隙是在任何情况下仍可用于其他数据的保证大小。当然,会使用内存间隙。 例如,如果添加了字节类型的全局变量,则将其放在内存中的第一个空闲字节中。 FB实例,类型结构或数组的变量或POU的代码必须连续保存,因此会占用更多内存。因此,只能保证最大的连续可用内存。