C# static 的占用内存问题
我不太明白想问一下:一方法如果是static是不是即使不调用这个方法这个方法也一直占用一定的内存空间。例如:如果一个方法不是STATIC在他被new出来使用完后就会被GC...
我不太明白想问一下:
一方法 如果是static是不是即使不调用这个方法这个方法也一直占用一定的内存空间。
例如:如果一个方法不是STATIC 在他被new 出来使用完后就会被GC回收了?如果这方法是STATIC的是不是在整个应用程序进程中一直占用的着内存无法被GC回收?
在就是如果设计这个程序,什么样的方法应该用STATIC 什么样的方法应该避免用STATIC 以便减少占用内存(我自己猜的) 展开
一方法 如果是static是不是即使不调用这个方法这个方法也一直占用一定的内存空间。
例如:如果一个方法不是STATIC 在他被new 出来使用完后就会被GC回收了?如果这方法是STATIC的是不是在整个应用程序进程中一直占用的着内存无法被GC回收?
在就是如果设计这个程序,什么样的方法应该用STATIC 什么样的方法应该避免用STATIC 以便减少占用内存(我自己猜的) 展开
2个回答
展开全部
第一个问题:对的,静态方法会首先创建,并且只会在应用程序结束的时候销毁.
第二个问题:静态可以看做全局方法,也就是那些在同一命名空间下需要随时调用的方法都可以作为静态方法,譬如扩展方法,你所有object类型的.ToString()方法就是扩展方法,他可以在任何地方调用,编程要灵活,没有特定的方法来告诉你什么时候该用不该用,多积累经验,时间久了你就明白了.
而且现在硬件环境的提升,对内存的需求也不是太紧张了,刚开始入门的时候完全可以先不考虑这个问题,等有经验了,你自然就知道该怎么做了!
第二个问题:静态可以看做全局方法,也就是那些在同一命名空间下需要随时调用的方法都可以作为静态方法,譬如扩展方法,你所有object类型的.ToString()方法就是扩展方法,他可以在任何地方调用,编程要灵活,没有特定的方法来告诉你什么时候该用不该用,多积累经验,时间久了你就明白了.
而且现在硬件环境的提升,对内存的需求也不是太紧张了,刚开始入门的时候完全可以先不考虑这个问题,等有经验了,你自然就知道该怎么做了!
参考资料: 纯手打
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询