问:

mumps 内存分配因子在哪

答:
Mumps是一种多值编译语言,用于开发数据库应用系统。在Mumps中,内存分配由几个因子共同决定:
1. Mumps内存池大小:这个由MUMPS启动参数 memory 设定,决定Mumps可分配的总内存量。如果应用程序内存需求超过这个数值,会导致Mumps崩溃。
2. 值段大小:Mumps内存被划分为多个值段(value segment),每个值段 default size 为512字节。通过值段,Mumps实现多值特性。如果一个变量需要超过512字节,会占用多个连续值段。值段大小可以通过参数segsize修改。
3. 变量节点大小:每个变量在内存中都有一个变量节点(variable node)。变量节点大小默认为12字节,可以通过参数NODSIZE修改,最小为4字节。变量节点中记录变量相关信息,如值段索引,变量名等。
4. 字符串节点大小:字符串类型变量会有一个字符串节点(string node)。默认字符串节点大小为10字节,可以通过参数STRNODSIZE修改,最小为6字节。字符串节点记录字符串内容及长度信息。
5. 索引散列表大小:Mumps使用散列表来实现变量名到变量节点的映射。散列表大小默认为1021,可以通过参数HTSIZE修改。散列表大小决定变量名查找效率,太小会减慢查找速度。
6. 编译符号表大小:编译时使用符号表存储临时变量信息。大小默认为509,可以通过SYMTABSIZE修改。如果编译大量代码,需要适当增大此大小。
7. 进程栈帧大小:每个Mumps进程都有自己的栈,用于存储子例程调用时相关信息。栈帧默认大小为2048字节,可以通过参数FRAMESIZE修改。
所以,Mumps内存分配主要受Mumps内存池大小、值段大小、变量节点大小等多个因子的影响。这些参数的设置,需要根据系统负载和内存容量进行权衡,既要满足内存需求,又要尽量减小内存碎片。
希望上述信息能帮助您理解Mumps中内存分配机制。如果您有任何其他疑问,欢迎进行咨询。