Compilation 多程编译器可以在内存中编译大程序而不会耗尽内存吗?

Compilation 多程编译器可以在内存中编译大程序而不会耗尽内存吗?,compilation,compiler-theory,Compilation,Compiler Theory,我正在为一种语言设计一个多通道编译器,AST完全保存在内存中。 这意味着,无论程序由多少个文件组成,我都将整个AST保存在内存中 我正在思考由15K+文件组成的潜在的大程序(谷歌浏览器是我脑海中出现的第一个例子,在C++和C/C++编译器中有单独的编译,所以这类语言不是问题)。 让Google Chrome的整个AST保持运行的编译器可能会耗尽内存吗?当然可能会耗尽内存。然而,仔细地做,AST并不需要比源代码本身更多的内存,因为可以对公共符号(所有类型、方法、结构等)进行重复数据消除和指针引用

我正在为一种语言设计一个多通道编译器,AST完全保存在内存中。 这意味着,无论程序由多少个文件组成,我都将整个AST保存在内存中

我正在思考由15K+文件组成的潜在的大程序(谷歌浏览器是我脑海中出现的第一个例子,在C++和C/C++编译器中有单独的编译,所以这类语言不是问题)。
让Google Chrome的整个AST保持运行的编译器可能会耗尽内存吗?

当然可能会耗尽内存。然而,仔细地做,AST并不需要比源代码本身更多的内存,因为可以对公共符号(所有类型、方法、结构等)进行重复数据消除和指针引用

问题往往是,当自定义数据结构(例如,充当自己的链表的AST节点)能够将内存利用率降低1-2个数量级时,会使用低效(大型通用)数据结构