仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 822|回复: 9
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之谈谈.NET中罕见的内存保守成绩――GC、托付事务和弱援用仓酷云 ...

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)实在吧,内存保守一向是个使人头疼的成绩,在带有GC的言语中这个情形失掉了很年夜的恶化,可是仍旧大概会有成绩。
1、甚么是内存保守(memoryleak)?

内存保守不是指内存坏了,也不是值内存没插稳漏出来了,复杂来讲,内存保守就是在你等候的工夫内你程序所占用的内存没有依照你设想中的那样被开释。
因而甚么是你等候的工夫呢?分明这点很主要。假如一个对象占用内存的工夫和包括这个对象的程序一样长,可是你其实不希冀是如许。那末就能够以为是内存保守了。器具格式子来讲明以下:
  1. classButton{publicvoidOnClick(objectsender,EventArgse){...}}classProgram{staticeventEventHandlerButtonClick;staticvoidMain(string[]args){Buttonbutton=newButton();ButtonClick+=button.OnClick;}}
复制代码

下面这段代码中,我们利用了一个静态的事务,而静态成员的性命周期是从AppDomain被加载入手下手,直到AppDomain被卸载,也就是说在一般情形下假如历程没被封闭,又健忘作废注册事务,那末ButtonClick事务包括的EventHandler托付所援用的对象会一向存在到历程停止为止,这就形成了内存保守成绩。这也是.NET中最多见的内存保守成绩的缘故原由之一。前面我会接着说怎样办理这类事务酿成的保守成绩。

2、内存接纳的体例

1、援用计数
援用计数的寄义是跟踪纪录每一个值被援用的次数。当声了然一个变量并将一个援用范例值赋给该变量时,则这个值的援用次数就是1。假如统一个值又被赋给另外一个变量,则该值的援用次数加1。相反,假如包括对这个值援用的变量又获得了别的一个值,则这个值的援用次数减1。当这个值的援用次数酿成0时,则申明没有办法再会见这个值了,因此就能够将其占用的内存空间接纳返来。如许,当渣滓搜集器下次再运转时,它就会开释那些援用次数为零的值所占用的内存。
像本来IE6中Javascript华夏生对象内存接纳的体例就是经由过程反省对象是不是有援用来判别一个对象是不是是渣滓。IE9之前,其BOM和DOM中的对象是利用C++以COM对象的情势完成的,而COM对象的渣滓搜集机制接纳的也是援用计数战略。而这类体例一般会由于轮回援用招致内存保守,也就是A援用B的同时,B也援用者A。在ObjectC中也会有如许的轮回援用的成绩。在ObjectC中的办理计划就是给一方标志为weak,先容能够参看这里,关于ObjectC中的托付形式的先容。


2、标志扫除法(mark-weep)
C#中接纳的是标志法接纳内存,全体对象都要标志,而且只标志一次就不再标志。判别一个对象是否是渣滓取决因而否有援用,而是取决是是不是被root援用。
root的范例有存放器中的变量,线程栈上的变量,静态变量等。
我们来看一幅一般情形下的对象图,图中有一个轮回援用。
<pstyle="margin:10pxauto;font-family:blackVerdana,Arial,Helvetica,sans-serif;line-height:21px;">
莫相离 该用户已被删除
沙发
发表于 2015-1-19 16:11:22 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
蒙在股里 该用户已被删除
板凳
发表于 2015-1-24 13:45:54 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
山那边是海 该用户已被删除
地板
发表于 2015-1-24 15:31:19 来自手机 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
深爱那片海 该用户已被删除
5#
发表于 2015-1-25 23:49:49 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-1 21:41:50 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
飘灵儿 该用户已被删除
7#
发表于 2015-2-7 15:22:10 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
活着的死人 该用户已被删除
8#
发表于 2015-3-6 20:27:17 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
不帅 该用户已被删除
9#
发表于 2015-3-13 08:09:50 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
再现理想 该用户已被删除
10#
发表于 2015-3-20 17:19:53 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表