无限循环中的内存使用

时间:2019-04-23 23:10:20

标签: c#

我很好奇无限循环在计算机上使用了多少内存。我知道这取决于线程在做什么,但可以说它正在读取一些Json并使用正则表达式解析字符串。这样是否每次循环都会将垃圾存储在内存中?

i=0    
count=0
while i<3:
  if input == RESULT[i]:
     count=count+1
  i = i + 1
if count==0:
    RESULT.append(input)
print(RESULT)

2 个答案:

答案 0 :(得分:2)

忽略任何其他问题,只专注于您的记忆...

答案是每个allocation(足够奇怪)都分配内存。您可以假设,如果您几乎调用任何方法,都会有分配,那么多少取决于该方法。但是, .net 是用垃圾收集器构建的,该收集器将监视此问题,并且(在需要时)将清理和/或压缩超出范围的分配

垃圾收集不是免费的,这意味着它会暂停所有线程来执行其工作,因此在某些情况下,这可能不是理想的选择。但是,在大多数情况下,这并不重要。

如果您担心分配,或者想减轻 GC 的压力,那么我建议您监视内存 内存分析器之一,以计算已分配的内容,并对垃圾收集器及其工作方式进行研究

答案 1 :(得分:1)

将此行插入循环中以找出答案!

Console.WriteLine($"Mem usage: {GC.GetTotalMemory(true):#,0} bytes");