跨语言的内存存储

Memory storage across languages

本文关键字:存储 内存 语言      更新时间:2023-10-16

我是一个编程新手,最近发现了一些语言(c++,java,…)中对象和变量的存储是如何工作的。但是当我(在随机站点)读到其他语言(如ruby)中的存储是如何工作的时候,很明显堆栈的概念并不存在,对象和变量都保存在堆中。这是真的吗?

如果是,则执行像stack或(.data,。其他语言的BSS)物理上不存在?存储是如何工作的?我不太懂内存段。

编辑:我不是在问每种语言的内存段,我只是想知道为什么一个段存在于一种语言中,而在另一种语言中却没有。段在物理上不存在吗?段?比如RAM的不同部分)

Ruby语言规范没有提到任何关于堆栈和/或堆的内容。一个特定的Ruby实现是碰巧使用堆、堆栈、两者都使用,还是两者都不使用,完全取决于实现者。

一般来说,Ruby实现每个进程使用一个堆,每个线程使用一个堆栈,每个光纤使用一个轻量级堆栈,但这是特定Ruby实现的私有内部实现细节,不向程序员公开,也不能以任何方式保证,也就是说,它可以随时更改而不通知。也不是所有的实现都是如此。MagLev集群中的所有进程(和所有计算机)都有一个单独的分布式持久堆。红衣主教没有堆栈,它使用在堆上分配的延续。我相信SmallRuby为所有线程使用了一个意大利式堆栈。

注意这不是不寻常的。例如,c#语言规范也没有提到堆或堆栈。Java语言规范和c++标准也没有。