繁体   English   中英

我的过程内存恒定吗?

[英]Is my process memory constant?

这是一个学术问题。 如果我有恒定数量的变量,对象等,并且我们假定GC将不会启动,也不会出现瓶颈。 其他因素是否可以迫使我的应用程序内存波动? 在这种情况下,由我的进程分配的内存将保持不变吗?

您可以使用互操作来调用非托管函数,该互操作会修改可用内存量。 而且,JIT编译器可能会随时启动以将IL转换为机器代码,并可能消耗内存。 另外, 假设如果您使用.NET,则不能假定GC不会启动,因此从错误的假设开始得出的任何结论都是错误的。 因此,要回答您的问题,您不能假设内存将保持不变。

您的方案是人为的,不现实的:

我们假设GC将不会启动

好吧,会的。 您的应用程序在执行过程中可能采用不同的路径。 如果确实如此,则状态可能会不时有所不同,对堆上对象的引用可能会保留更长的时间,等等。我真的看不到这个问题的目的。

就像在这些人如何避免产生任何垃圾的问题中提到的那种情况那样,这是可能的 使系统处于使用恒定内存集且不发生任何GC的状态(因为没有分配任何东西需要收集它,并且死掉了)。 链接到的文章甚至有一个实际的(但高度专业化的)案例。

请注意,它们有很多方法和类,它们不使用我们大多数人每天都会使用的方法和类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM