V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  kneo  ›  全部回复第 22 页 / 共 66 页
回复总数  1316
1 ... 18  19  20  21  22  23  24  25  26  27 ... 66  
2024-12-04 16:16:30 +08:00
回复了 tiRolin 创建的主题 Java Java 异步接口运行之后会占用大量的服务器内存该怎么解决?
旧版本堆增长之后就是不缩小的。你可以升级到最新的 jdk 试试。
2024-12-04 12:32:37 +08:00
回复了 usax 创建的主题 程序员 各位程序员,你们日常「中文与英文间添加空格」吗
一般不加。不过像 v2 好像会自动帮你加。
2024-12-04 12:30:54 +08:00
回复了 matrix1010 创建的主题 Go 编程语言 大家有没有见过没有使用依赖注入的复杂 Go 开源项目
一会儿有,一会儿没有,一会儿有没有。理解不了你的问题。
2024-12-04 10:03:44 +08:00
回复了 carljson 创建的主题 游戏开发 分享我一年多的做独立游戏开发经验心得
独立游戏上 taptap 不要版号吗?
2024-12-03 18:21:11 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@bli22ard

> 就启动 goroutine ,不管是堆还是栈,没搞懂它有什么存

启动 goroutine ,实际上是你用 goroutine 加载了一个函数。栈就是这个函数的运行环境。哪怕是一个空函数,只要没被优化掉,也是一个函数调用,也必须有栈。

类似的,你在其它语言里启动一个线程也需要提供一个可运行函数(或者等价物)。这不是 GO 专有的概念。

> 如果是参数,变量,为什么要是 2kb ,而不是这些参数、变量的实际大小

栈的特点就是动态增长。因为函数调用需要把子函数的存储也分配到这个栈上。函数的嵌套越多,需要的内存就越多。

栈空间不够用就需要重新分配内存并且把旧的栈数据复制过去。(这里指的是虚拟线程,原生线程收到操作系统限制可能无法修改栈大小。)

如果初始化栈过小,频繁的扩容会影响性能。

初始栈过大,会造成内存浪费。

2KB 是一个性能权衡的结果。

您可能需要找一些函数调用和栈内存的示意图看一下。不一定非是 GO 的。
2024-12-03 17:01:07 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@bli22ard

> 更本质的是,为什么需要这个 2kb 内存,这 2kb 存的什么东西,这个期待有实力的人研究一下 runtime 。

2KB 就是栈啊……和其他语言没有本质区别。函数的参数,变量,闭包之类的。不过正常情况 Java 在栈上存对象只存指针,Go 因为有 struct ,相比 Java ,栈内存的使用频率会更多点,预分配的大一点也是合理的。
2024-12-03 11:05:00 +08:00
回复了 xzg1993 创建的主题 问与答 外观好看的 windows 本,有哪些推荐。
@sean419 明白。这机器不错的。如果有别的颜色更好。
2024-12-03 08:57:33 +08:00
回复了 xzg1993 创建的主题 问与答 外观好看的 windows 本,有哪些推荐。
@sean419 谢谢朋友,英雄联盟能跑到多少帧啊?我买了之后因为不能联网,测试了几个小游戏,像魔法工艺第一层 BOSS 才几十个弹幕就卡了,黎明前 20 分玩了几分钟也是明显卡。有个不吃显卡的 Noita 倒是很流畅。我感觉 CPU 确实不错,但是稍微用到 GPU 的可能就要拉胯了……我想了想就退了。
2024-12-02 17:06:51 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@bli22ard

> 比较好奇,每个 goroutine 2kb ,到底存的是什么
> 最后 @lesismal @kneo 两位高手来围观

见笑了,谈不上高手。

我的理解这 2KB 就是预分配的栈大小。过小的初始栈可能会导致频繁的内存重新分配。
2KB 可能是 go 团队在性能测试之后得到的一个比较好的默认值。这个值也是经过多次调整的:

https://stackoverflow.com/questions/22326765/go-memory-consumption-with-many-goroutines

> in Go 1.4: the minimum size of the goroutine stack has decreased from 8Kb to 2Kb.
> https://github.com/golang/go/blob/bbd25d26c0a86660fb3968137f16e74837b7a9c6/src/runtime/stack.go#L72:
_StackMin = 2048


也许可以把 2KB 改成 1KB 重新编译一个 go 版本,内存测试的结果就和 Java 一样了。当然前提是 1KB 对这个测试来说够用,够不够用我也不知道……

当然真实环境大家确实不在意一个 goroutine 占用了 2KB 是不是太多。但是这个测试至少让我们知道了这个 2KB 的存在。程序员总是对这种小细节感兴趣的。
2024-12-02 16:57:35 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 哈哈,给你机会了。既然你不会我就帮你个忙。

Wiki 中很明确的提到了 stackful 和 stackless:

https://en.wikipedia.org/wiki/Coroutine#Definition_and_types

> Besides that, a coroutine implementation has 3 features:
> - ...
> - ...
> - whether a coroutine is able to suspend its execution from within nested function calls. Such a coroutine is a stackful coroutine. One to the contrary is called stackless coroutines, where unless marked as coroutine, a regular function can't use the keyword yield.

同时也举例了:

https://en.wikipedia.org/wiki/Coroutine#Lua

> Lua has supported first-class stackful asymmetric coroutines since version 5.0 (2003), in the standard library coroutine.

很明显,有栈协程和无栈协程都是协程,不是加个定语就可以随便用的。Wiki 也不是连个有栈无栈都不懂的“过时”信息。

同一页面也明确指出了:

https://en.wikipedia.org/wiki/Coroutine#Go

> However, goroutines are not coroutines (for instance, local data does not persist between successive calls).

goroutines 不是协程,加再多定语也没用。

这个总结不是给 @CloveAndCurrant 这种人看的,他除了嘴硬啥也不懂。但我相信其他人看了自然能明辨是非。

我不相信 @CloveAndCurrant 能再给出任何有意义的回复了。不和他聊了。
2024-12-02 16:27:29 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 嘴硬。
2024-12-02 15:57:48 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 哈哈,光会说,您倒是引用一个 wiki 说“goroutines 是有栈协程”给我看看啊。需要我帮你吗?
2024-12-02 15:20:19 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 哈哈,您真是定义的神啊。您来定义下我是在“引用 wiki”还是在“抠字眼”?


https://en.wikipedia.org/wiki/Coroutine#Go

However, goroutines are not coroutines (for instance, local data does not persist between successive calls).
2024-12-02 14:30:04 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 哦?

我引用你说 wiki 不是真理?

我说大家 wiki 和你二选一,你开始骂人“老 B 登”。

我说到让你爸来投票,你开始求我别拿 wiki 抠字眼?你是真怕他不选你啊?

我都被你逗笑了,这是你的职业吗?
2024-12-02 14:09:10 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 你也不会别的啊。上来就输出一个 goroutine 是协程然后还砸脚了,然后说别人“抠字眼”哈哈。然后除了吹牛,又“工程领域”又“wiki 不是真理”的,好像你亲妈给你起名叫真理似是。

信不信让你爸来他都会选 wiki:宁要 wiki 不要逆子。
2024-12-02 13:40:50 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@CloveAndCurrant 诶呦,好几天了,咋还是那套车轱辘话啊。我以为你学了啥新东西来怼我呢。也是,您这辈子就这样了,连个术语都改不过来,哪还能学会新东西啊。昨天吃几碗饭没忘就不错了。

不过你总碰瓷 wiki 干啥啊?你脸不要啦?你连个术语都搞错,还代表“工程领域”否定 wiki ,好在没人把你当回事。

你觉得 wiki 是错的,但是你不说你觉得,那你就是对的了?你可真是个小天才哈哈。不知道你家长给你配手表了吗?

你和 wiki 二选一,真不知道整个地球上除了你 MA 还有谁会选你。[捂嘴笑]
格盘别选快速格式化就行。Windows 或者大多数软件都能解决。格完物理销毁,没人会捡你的垃圾再费劲儿恢复数据偷看的……
2024-11-30 22:07:25 +08:00
回复了 Canglin 创建的主题 买买买 朋友们黑五都买啥了
买了十几个小游戏,花了两百。
2024-11-30 00:21:38 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@ykrank 哈哈,无所谓了,我心里有数。
2024-11-29 23:38:07 +08:00
回复了 hez2010 创建的主题 程序员 运行 100 万个异步并发任务需要多少内存
@james122333

> 作者这样搞不是有目的就是真不知

作者就是随手撸几段代码测一下,我看到的是单纯的程序员的快乐。不要阴谋论啦。
1 ... 18  19  20  21  22  23  24  25  26  27 ... 66  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2551 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 13:29 · PVG 21:29 · LAX 05:29 · JFK 08:29
♥ Do have faith in what you're doing.