V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  vevlins  ›  全部回复第 33 页 / 共 42 页
回复总数  839
1 ... 25  26  27  28  29  30  31  32  33  34 ... 42  
再补充下,看到有文章说所有值都是存储在堆内存上(现在的 v8 不一定这样,跟上面说的一样应该怎么实现都可以,只是效率和稳定性的区别),栈中只存储指针,感觉这种说法很合理,指针的大小都是固定的且比较小的,如果还超过就爆栈。 垃圾回收机制应该跟大多数文章说的一样,按照我现在猜测,如果是 primitive 则在退出后清理引用的空间,reference 才走完整的垃圾回收机制。primitive 是 pass by value, object 是 pass by reference,所以才有深拷贝和浅拷贝的区别。

至于 immutable 还是 mutable,还要再深入理解下。
又想了想,感觉自己是被很多“深拷贝浅拷贝”之类的文章误导了。

存储在哪里跟 primitive 与否没有任何关系,完全取决于实现方式。不过之前说的前提还是成立的,1 要考虑生命周期 2 要考虑会不会爆栈。 在这个前提下,即使是 primitive 的字符可以放在堆上,因为一个字符类型的量大小范围非常大。
@marcong95 v8 对 string 的存储似乎有些复杂,看了几篇文章没看懂,情况有些多。 但有的地方提到了 v8 对单个字符的上限有 512MB,应该是存在堆上。

primitive 的确实是 immutable 的,重新赋值会重新开辟一个空间。当然我也没看过 v8 之类的实现,但大多数文章都是这样说的。
@nfyig 按照我的理解,本身这个变量确实是 primitive,但被引用做闭包后这个量被包含在了返回的的 function 对象内部,从 primitive 变为一个 reference 量下类似于 upvalue 之类 key 对应的 value 了。这跟题目中的说法不冲突。
再明确一下讨论的范围,js 确实不直接操作内存,具体原理肯定要考虑到解释器 /编译器的实现,但这样思考感觉又像是套娃。至少按照这种说法,java 也没有内存一说了。

但是按照我的理解,诸如 primitive 和 reference 这种在 ecma 中制定并描述了其行为的数据类型,JS 引擎为了实现这种行为规范,应该会在底层采取某种内存分配方式。

讨论的范围仅限制在规范层面和 V8 实现层面。
@muzuiget v8 是用 c++写的,是否要看 c++中如何实现呢。我也有这种想法,但按照这种思考方式,哪些语言 /编译器才有直接操作内存的能力呢?
ecma 没有对内存分配做规定,那 v8 等主流的引擎是如何实现的呢? 我看到过有 stackoverflow 回答中提到 null\undefined\true\false 在 v8 实现中是放在堆上的,类似于 Java 中 Boolean.True 的概念,为何要这样设计?
2019-12-24 13:20:30 +08:00
回复了 vevlins 创建的主题 JavaScript 对 js 异步中的 promise、async 等的理解。
再补充一下,其实我想说的 callback 机制是 js 中的 eventloop,而非 cps 之类的概念。
2019-12-17 00:29:42 +08:00
回复了 vevlins 创建的主题 编程 lua 的学习成本?
@leafdream 看过部分语言规范
2019-12-16 10:11:15 +08:00
回复了 vevlins 创建的主题 程序员 web“全干”工程师职业发展和跳槽难度?
@scukmh 南方的鹅厂,进来前刚 bg 调整
2019-12-11 09:29:52 +08:00
回复了 naix1573 创建的主题 问与答 向大家请教一下换房和买车的取舍问题
买个便宜二手,平时做下外包 cover 油费呢
2019-12-10 19:59:09 +08:00
回复了 vevlins 创建的主题 HTTP golang body.close 的默认行为?
上面一段话的含义是否是如果读完缓冲区还有内容,就弃用这个连接,发送一个 connection:close 的包告诉服务器断开链接。 这个“connection:close”是客户端直接发送一个 fin,然后从连接池去掉吗?还是对应什么操作?
2019-12-10 16:15:25 +08:00
回复了 vevlins 创建的主题 程序员 点赞多的都是小白文吗?
说酸的别酸了,我看的是真的尴尬...
上面评论深度或者垃圾文都是指我自己写的文章,我还评判不出来文章深度吗?
2019-12-09 17:01:54 +08:00
回复了 leeolsen 创建的主题 Android 小米正式登陆日本,宣传反响不错啊
我也看成小日本登陆
2019-11-15 15:56:15 +08:00
回复了 samondlee 创建的主题 程序员 [地府大数据管理系统] 是哪个大佬做的太酷了 8
@cominghome 有这种事还用纠结,全家都带过去,吃香的喝辣的,地府都能上大数据系统了,物质水平和文明水平也一定极大丰富了。过去当阎王红人,长生不死,有啥不好。
2019-11-08 14:32:08 +08:00
回复了 colin0830 创建的主题 程序员 后端兼前端兼测试,出了问题还有惩罚,正常吗?
从你的角度不应该,从老板角度很生气。 给客户演示出了问题直接影响收入和形象了呀
2019-10-29 19:09:48 +08:00
回复了 z0ro 创建的主题 机械键盘 好像种草 hhkb 了,求打醒
有钱就买,没钱买个 niz 大概五六百,手感是差不少,但是用两个月体验会上升一些,应该是 niz 做工粗糙些,敲两个月才顺滑。
2019-10-19 16:06:48 +08:00
回复了 vevlins 创建的主题 Go 编程语言 如何通过视频 url 快速获取第一帧?
@custer ffmpeg 可以支持 url 作为-i 的输入,测试了下应该是只需要截取较前的部分文件流,速度比较快。
2019-10-18 17:12:27 +08:00
回复了 vevlins 创建的主题 Go 编程语言 如何通过视频 url 快速获取第一帧?
刚试了一下可以的
2019-10-18 16:59:21 +08:00
回复了 vevlins 创建的主题 Go 编程语言 如何通过视频 url 快速获取第一帧?
@python35
@micookie 我知道 ffmpeg 是可以获取第一帧,但是可以通过 url 获取吗?是全部下载还是下载文件头就可以呢?
1 ... 25  26  27  28  29  30  31  32  33  34 ... 42  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2547 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 12:26 · PVG 20:26 · LAX 05:26 · JFK 08:26
Developed with CodeLauncher
♥ Do have faith in what you're doing.