自带的 MVC 模板,每按一次 F5 内存占用固定增大 0.8MB 这是什么机制,占到什么程度会开始释放?难道假设我只有 1GB RAM ,只能处理 100 个请求?
1
frankyzf 2022-04-12 20:25:45 +08:00
|
2
frankyzf 2022-04-12 20:27:59 +08:00
不知道你用的哪个版本,感觉 net 6.0 比以前的版本在内存控制方面好些
|
3
roundgis 2022-04-12 20:30:44 +08:00 via Android
那 oom 沒有?
|
4
userforg2021 2022-04-12 20:43:06 +08:00
1. 其它语言是哪些语言;
2. 100*0.8=80 ; 3. 了解一下 GC 工作机制,以及.net 的 Workstation GC 和 Server GC ; 4. 开 IDE 调试看看有没有触发 GC ,手动触发 GC 试试; |
5
Leviathann 2022-04-12 20:56:30 +08:00
可能没有归还给操作系统
java 应该也是这样,除非是 12 以后的版本 g1gc + 开启 G1PeriodicGCInterval 才会比较明显的归还内存 而 13 以后使用 zgc 的话是默认开启归还的 |
6
wanguorui123 2022-04-12 21:28:35 +08:00
可能是 GC 延迟回收吧
|
7
hez2010 2022-04-13 00:06:57 +08:00 via Android 1
GC 不会立即 decommit 掉分配的内存的,因为很可能刚刚使用的内存很快又会被使用。
如果代码中没有内存泄漏的 bug 的话,这个数值不会一直往上增长,而是最终会维持在一个稳定的范围内。 |
8
seakingii 2022-04-13 00:51:08 +08:00 1
搞个 ab 压力测试下会不会内存无限增长
|
9
INCerry 2022-04-13 12:37:56 +08:00
|
10
ragnaroks 2022-04-13 14:15:19 +08:00
不存在你说的问题,3.1 起一个默认模板项目,调试模式初始占用 70M ,多次 F5 后固定在 80M 上下浮动
|
11
MonoLogueChi 2022-04-13 16:05:47 +08:00 via Android
先要搞明白,其他语言是哪些语言,以及这些语言为什么能做到占用内存比较小。
只要处理请求,就会产生内存占用,要想内存占用始终保持在一个比较低的水平,就要频繁回收内存,但是回收内存会对性能产生影响,内存释放和回收的越频繁,对整体性能影响就越大,就是时间换空间的问题 https://docs.microsoft.com/zh-cn/aspnet/core/performance/memory?view=aspnetcore-6.0 |