OOM 是内存用完了,为什么用完了呢,因为内存占用多了。out of stock 是库存卖完了,因为库存变少了。这些事物的变化都是此消彼长的关系,只是人们关注的重点不同罢了
cxtrinityy
2022-11-27 09:12:44 +08:00
我觉得其实没翻译错,人翻译取的 out 的第一个意思,away from the inside of a place or thing, 他取的上下文显然是开发者在调试除错一个应用的场景,以应用申请使用的内存为主体,超过了系统允许的堆栈上限,做内存溢出的翻译,因为谈到 oom 这种上下文是很常见的
brocadesoar
2022-11-27 09:38:03 +08:00
"那 out of stock 是什么,库存溢出?库存太多了,仓库装不下了,永远不会缺货是吧" 我觉得这里的"缺货"的理解误导自己了,对于库存来说,库存太多(溢出)装不下性质是"因为装不下,多出来的库存没地方去,这样不行",这是入库的问题,而"缺货"明显是出库的问题. out of memory 也是一样,内存太多(溢出)装不下是申请内存的问题.
out of memory 是内存空间没有了,可以理解成 negative space 没了;而 out of stock 是没货了,理解成 positive space 没了。这两个例子根本上就不同,楼主引入库存的概念带来了进一步的混淆,令读者困惑。
回到 memory 上来,“内存不足”和“内存溢出”前后两个内存描述的不是同一个对象,前者指未被占用的内存空间,空间不足;后者指 CPU 在计算时象内存空间中存入的数据,数据太多溢出了。这里体现出的是中文语义的不准确性。“内存”一词,描述的到底是 positive space 还是 negative space ,没有严格的定义,只能根据上下文来判断。
归根结底,并不是内存没了,而是剩余内存没了。“库存溢出”真要说就是 out of stock space ,倒也没什么错,就是库存太多,仓库装不下了。 你要用 out of stock 来比的话,内存里使用内存资源的是应用程序,那得是 out of programs 才行了,程序都走光了,没程序在运行了。比如说线程池里的线程都在忙,没空理你,那就 out of idle threads 了。
out of memory 就是没内存用了。翻译成「内存溢出」纯粹是译者想当然了,可能是「 memory overflow 」的中译见多了,然后自己遇到个「 out of memory 」一看,「 memory 」不就是「内存」,「 out 」不就是「出来」,难道这个就是「内存溢出」?于是就这么拍脑袋写下来了。