JVM 战士请教一个问题,各种语言都是怎样控制内存上限的?

2022-06-02 09:58:50 +08:00
 yazinnnn

类似于 java heap(-Xmx1024m)的设置,各种语言都是怎样设置的?

比较想知道 .net go swift rust node php haskell 等等

5235 次点击
所在节点    程序员
53 条回复
Building
2022-06-03 13:43:28 +08:00
@FrankHB 你扯的什么乱七八糟的东西啊,来来来,最简单的,写一段程序,只要输入一个字符,立刻申请 1gb 的内存放着,别管我用来干什么,你举个例子,哪一门语言的编译器这么牛逼不给过?
hxndg
2022-06-04 00:48:22 +08:00
hxndg
2022-06-04 01:02:44 +08:00
@FrankHB
不好意思,刚才不小心敲错了。。。。
实际上我没太看明白你的意思,可以详细解释下吗?或者指明一些资料?我内存这块的很多认识都是原先从实际工程现看的,可能已经和现在的发展脱节了?
原先做性能优化,使用 linux 的 hugepage 直接在用户态内存管理的时候就是类似 slab 来做操作,这个控制是算 runtime 做的吗? C 应该不限制这个?另外目前 x64 虚拟内虽然保存了一些高位,但是基本可以认为是无限的?
hxndg
2022-06-04 21:58:16 +08:00
@FrankHB
忽然想起来一个,你是说 /proc/pid/limit 下面的资源限制吗?
t2jk4000
2022-06-05 00:42:50 +08:00
@JYii 这个难道不是操作系统 kill 的么
461da73c
2022-06-05 14:50:56 +08:00
JAVA 真是又慢又费内存。
JYii
2022-06-06 09:28:10 +08:00
@t2jk4000 对,是操作系统,前半句说的有误
FrankHB
2022-06-23 19:21:04 +08:00
@Building 所以你也太小看编译器的下限了。
“申请内存”?你是不是不知道直接不提供给你“申请内存”的实现也符合 ISO C ?你先给我说说你怎么确保一个 strictly conforming 的 C 程序“申请内存”还一定能过?
顺便,让 int main(){int a;}直接给 stack overflow 都是符合 ISO C 的。你说你见到过的编译器都会过?行,我写个程序判断源代码是不是长这样,如果是就直接给你生成一跑就会挂掉的二进制代码,不是就扔给 gcc ,不也是个符合 ISO C 的实现?(不符直接扔标准条款谢谢。)
(顺便,int a;不算“申请”内存。)
所以用得着你个“申请内存”个什么寄玩意儿啊……

@hxndg 上面举例子过了,用到个自动对象都可以给你当作栈爆了,也是合乎规矩的。即便没什么实现那么不要脸。
实际上这是 ISO C 比较下限,事实上允许实现随便钦定资源限制,但一点都没说最小限制是什么,只说超过限制 UB 。
而且这个比“分配内存”特殊在于原则上是没法直接加规则修的,因为 ISO C 抽象机里根本就没调用栈这种东西,自动对象不是被“分配”的。(但显然又要占资源,否则不确保不会爆栈的现有实现都不符合 ISO C 了。)
ISO C++同理( core lang 里唯一一个提到 stack 的是 stack unwinding )。
其实这种设计就没什么可移植性。

/proc/pid/limit 这个倒是比较有实际意义的好例子。不过,这个显示不出语言设计不讲理的地方。
Building
2022-06-23 20:55:06 +08:00
@FrankHB 为什么你总是不肯正面回答问题?扯这么多乱七八糟的东西?你就回答具体那一门语言的编译器动态申请内存不让过就行了
FrankHB
2022-06-23 22:01:13 +08:00
@Building 我没正面回答么?是不是你看不懂什么叫 ISO C ?
退一步讲,你连 OP 都不是,我 at 你又不是私信,非得专门喂给你看的所以一定要浅显到连你都看得懂?
再退一步讲,为什么我有义务回答你经常连 well-formed 都算不上的问题?
而且你哪来的自信定义什么叫“乱七八糟”,你是很确信在这个问题领域比我更权威咯?
Building
2022-06-23 22:09:29 +08:00
@FrankHB 所以呢?快回答啊,哪一门语言不给过?哪一门?说出来啊?承认自己错真的不丢脸,但是你气急败坏的样子真的很搞笑
FrankHB
2022-06-23 22:27:46 +08:00
@Building 睁眼瞎,“ISO C”都不知道?还是要说 ISO/IEC 9899 ?就算谭×也告诉过所谓的“C 语言”的学名是什么吧。还是非得拉上快没什么人鸟的 K&R C ?你能出多少经费要我考古吗?
你表演丈育症状就算了,非得表现常识有罪丈育没错就很欠扁诶···
Building
2022-06-23 22:39:48 +08:00
@FrankHB 快回答我啊,语言,哪一门语言,哪一门?名字是什么?你为什么说通用标准协议?你用通用标准协议写程序吗?还是你自己发明了一门语言?快,语言名字,我马上写给你看能不能过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856864

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX