跨语言的内存存储
Memory storage across languages
我是一个编程新手,最近发现了一些语言(c++,java,…)中对象和变量的存储是如何工作的。但是当我(在随机站点)读到其他语言(如ruby)中的存储是如何工作的时候,很明显堆栈的概念并不存在,对象和变量都保存在堆中。这是真的吗?
如果是,则执行像stack或(.data,。其他语言的BSS)物理上不存在?存储是如何工作的?我不太懂内存段。
编辑:我不是在问每种语言的内存段,我只是想知道为什么一个段存在于一种语言中,而在另一种语言中却没有。段在物理上不存在吗?段?比如RAM的不同部分)
Ruby语言规范没有提到任何关于堆栈和/或堆的内容。一个特定的Ruby实现是碰巧使用堆、堆栈、两者都使用,还是两者都不使用,完全取决于实现者。
一般来说,Ruby实现每个进程使用一个堆,每个线程使用一个堆栈,每个光纤使用一个轻量级堆栈,但这是特定Ruby实现的私有内部实现细节,不向程序员公开,也不能以任何方式保证,也就是说,它可以随时更改而不通知。也不是所有的实现都是如此。MagLev集群中的所有进程(和所有计算机)都有一个单独的分布式持久堆。红衣主教没有堆栈,它使用在堆上分配的延续。我相信SmallRuby为所有线程使用了一个意大利式堆栈。
注意这不是不寻常的。例如,c#语言规范也没有提到堆或堆栈。Java语言规范和c++标准也没有。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 类型总是使用其大小存储在内存中吗
- 使用无符号字符数组有效存储内存
- 具有内存顺序的原子负载存储
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 存储在哪个内存段(代码/数据段)类(员工)中?
- 可用存储空间会消耗更多剩余内存吗?
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 将数据存储在内存中以供以后访问
- 英特尔将指令存储在重叠的内存区域
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- std::set 是否将对象连续存储在内存中?
- 原子加载和存储与内存顺序放宽
- 我应该以字符形式存储数字以节省内存吗?
- std::unordered_set 中的元素如何存储在C++内存中?
- 是否可以更早地销毁对象,使其存储内存被后续对象重用
- SSE加载/存储内存事务
- 在类- c++中存储内存内容