根据 R 4.1.0 文档的 Memory{base} 帮助页面,R 为“固定”和“可变”大小的对象保留两个单独的内存区域。据我了解,可变大小的对象是用户可以在工作环境中创建的对象:向量、列表、数据框等。但是,当引用固定大小的对象时,文档相当晦涩:
[固定大小的对象]被分配为 cons 单元数组(Lisp 程序员会知道它们是什么,其他人可能会认为它们是语言本身的构建块、解析树等)[.]
有人可以提供一个存储在 cons 单元中的固定大小对象的示例吗?为了进一步参考,我知道该函数memory.profile()给出了 cons 单元的使用情况。例如,在我的会话中,这看起来像:
> memory.profile()
NULL symbol pairlist closure environment promise language
1 23363 623630 9875 2619 13410 200666
special builtin char logical integer double complex
47 696 96915 16105 107138 10930 22
character ... any list expression bytecode externalptr
130101 2 0 50180 1 42219 3661
weakref raw S4
1131 1148 1132
Run Code Online (Sandbox Code Playgroud)
这些计数在数字上和概念上代表什么?例如,是否logical: 16105引用存储在 R 源代码/二进制文件中的 16,105 个逻辑对象(字节?、单元格?)?
我的目的是更好地了解 R 如何在给定会话中管理内存。最后,我想我确实理解Lisp 和 …