ASP.NET静态方法和静态变量什么时候进驻服务器内存(内容来自itstrike.cn)
网站部署时静态方法、静态变量什么时候进驻服务器内存?
1.在IIS中设为虚拟目录时?(应该不会吧)
2.第一个用户网站时?
3.第一个用户访问静态方法所在的类时?
解决方法 1:
那就是一个用户访问一个带using 这个dll引用的页面时就被加载进内存了。就问题就变成:
1.当这个用户离开,并且没有其他用户在访问时内存就自动释放掉了吧?
2.当第二个用户同时来访问时,发现页面using的这个dll已经被加载进内存就不再另外加载了吧?
3.那样的话好像第一个用户访问要比已经访问着的页面慢很多吧,因为他多了加载dll这一步。
4.静态方法多个用户来同时访问应该没有并发性问题吧?
问的太多了,发现一开始分压的太少,呵呵~~
通过观查aspnet_wp.exe进程内存占用情况,发现
第一个问题:当用户离开,这个已经驻进内存的空间永远不会释放掉,除非重启服务器。
第二,三个问题:第二个用户来了不用另外加载,几个人同时访问一张页面aspnet_wp.exe内存占用一点也没变,只是CPU动了一下,所以第一个用户访问就慢很多。
第四个问题,我想应该不会有并发性问题吧,那为什么我见过的基本所有框架的DAL和BUL层的方法都不写成静态方法呢?因为没有并发性问题的话静态方法调用省去实例化的时间,而且他占着的内存人家实例化过的也要占,还多出一个放它地址的空间?为什么在家不用静态方法?
解决方法 2:
前3个问题,你已经找到答案了,最后一个,静态的和实例的,后者可以被垃圾回收机制回收,至于回收的时间,基本上不用控制就可以,好像是达到内存的60%自动回收,另外纯静态的东西不符合面向对象的思想,不过是工具类,对扩展和灵活,耦合上是不合适的

浙公网安备 33010602011771号