我很好奇无限循环在计算机上使用了多少内存。我知道这取决于线程在做什么,但可以说它正在读取一些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)
答案 0 :(得分:2)
忽略任何其他问题,只专注于您的记忆...
答案是每个allocation
(足够奇怪)都分配内存。您可以假设,如果您几乎调用任何方法,都会有分配,那么多少取决于该方法。但是, .net 是用垃圾收集器构建的,该收集器将监视此问题,并且(在需要时)将清理和/或压缩超出范围的分配。
垃圾收集不是免费的,这意味着它会暂停所有线程来执行其工作,因此在某些情况下,这可能不是理想的选择。但是,在大多数情况下,这并不重要。
如果您担心分配,或者想减轻 GC 的压力,那么我建议您监视内存 内存分析器之一,以计算已分配的内容,并对垃圾收集器及其工作方式进行研究
答案 1 :(得分:1)
将此行插入循环中以找出答案!
Console.WriteLine($"Mem usage: {GC.GetTotalMemory(true):#,0} bytes");