类型,对象,线程栈和托管堆在运行时的相互关系

当系统加载一个CLR的进程,进程里面可能有多个线程,这时候系统会给这个进程创建一个大小为1M的线程栈。这个线程栈用来存放方法调用的实参,和方法内部定义的局部变量。下图展示了一个线程栈的栈内存。线程栈的存储是从高位内存地址向地位内存地址构建的。现在假设线程栈执行的代码要调用M1方法。

在这个很简单的方法中,应该包含一些初始化这个方法的“序幕”代码,和一些“尾声”代码,负责在方法调用完成之后对方法进行清理。然后才返回给这个方法的调用者。M1方法调用开始时,M1的序幕代码在线程栈上分配局部变量name的内存。如下图

然后M1调用M2方法,将name作为一个实参来传递。这造成name局部变量中的地址被压入栈。如下图:在M2方法内部,将使用名为s的参数变量来表示栈位置。另外调用一个方法时还要将一个返回地址压入栈。被调用的方法结束后,应该返回到这个位置。如下图:M1调用M2的时候将实参和返回地址压入栈。

M2方法开始执行时,同样它的“序幕”代码在线程栈中为局部变量length和tally分配内存。如下图,然后M2中的内部代码开始执行。最终方法内部的代码开始执行,最终到达return语句,此时CPU的指令指针被设置成线程栈中的返回地址。而且M2的栈帧会被展开。(我理解栈帧被展开的意思就是在线程栈中就M2方法的痕迹给消除,应该是被尾声代码所为),这点不是很理解,肯定不能是在清楚M2方法法的痕迹之后在返回,那样返回地址已经不存在了,那就是程序在返回给调用者之后猜进行清理的?请教牛人。,之后M1会执行M2方法调用后面的代码。最后M1会同M2一样返回给调用者。

参考clr via C#

说的不对的地方,口下留情,疑惑地方请指点。

今日闲来无事,改写一套博客园皮肤,效果看本人空间,欢迎使用!

复制代码
  1 /*--------------http://zhaozi.cnblogs.com---------------*/
  2 #EntryTag{font-size:9pt;}
  3 #divRefreshComments{text-align:right;margin-right:10px;margin-bottom:5px;font-size:9pt;}
  4 .topicListFooter{text-align:right;margin-right:10px;margin-top:10px;}
  5 *{margin:0;padding:0;}
  6 body{margin:0;padding:0;color:#333;background-color:#EAEAEA;font-family:'微软雅黑',verdana,arial;font-size:12px;line-height:1.5;}
  7 img{border:0;}
  8 li{list-style:none;}
  9 input,textarea{border:1px solid #BBB;}
 10 h1,h2,h3,h4,h5,h6,th{font-weight:bold;color:#000;}
 11 a{text-decoration:none;color:#333;}
 12 a:hover{color:#F60;}
 13 #cnliu_header{}
 14 .cnliu_ad_sidebar{margin-top:10px;margin-bottom: 10px; width:300px; height:0;overflow: hidden;}
 15 #cnliu_footer{margin-left:30px;padding-left:35px;width:725px;font-size:12px;text-align:left;line-height:150%;}
 16 #cnliu_footer a{color:#BBB;}
 17 #mainContent{margin-left:15px;border-left:1px solid #DDD;border-right:1px solid #DDD;border-bottom:1px solid #DDD;width:760px;padding-top:25px;padding-bottom:30px;background-color:#FFF; float:left}
 18 /*right*/
 19 #sideBar{width:270px;border-top-width:0;overflow:hidden;padding:0 0 20px 10px;}
 20 .forFlow{margin:0 20px;}
 21 #footer{margin-left:30px; margin-top:30px; padding-left:35px; padding-bottom:5px; text-align:left; display:none}
 22 #lnkBlogLogo{display:none;}
 23 #blogTitle{padding:16px 20px;}
 24 #blogTitle h1{font-size:24px;}
 25 #blogTitle h2{font-size:10.5pt;color:#999;}
 26 #blogTitle .title{font-size:24px;}
 27 #blogTitle .subtitle{font-size:10.5pt;color:#999;}
 28 #navigator{margin-left:15px;border-left:1px solid #DDD;border-right:1px solid #DDD;width:975px;background:#f6f6f6;border-top:1px solid #DDD;border-bottom:1px solid #DDD;border-width:1px;height:30px;line-height:30px;color:#999;padding-left:30px;padding-right:35px;padding-top:2px;}
 29 #navigator img{display:none;}
 30 .blogStats{float:right;color:#999;}
 31 #navList li{float:left;margin-right:20px;font-size:10.5pt;font-weight:bold}
 32 #sideBar li,.divRecentCommentAticle{text-indent:-1.5em;margin-left:1.5em;}
 33 #sideBar h3,#MyIng .ing_title{margin:16px 0 0 0px;font-size:14px;text-align:left;}
 34 #calendar{margin-top:16px;text-align:center;}
 35 #calendar table{width:90%;margin:0 auto;}
 36 #calendar .CalOtherMonthDay{color:#999;}
 37 #sideBar .divRecentComment{color:#666;margin:0 0 8px 8px;}
 38 #sideBar .recent_comment_body{color:#666;margin:5px 0 8px 18px;text-indent:0px;}
 39 #sideBar a {color:#06C;}
 40 #sideBar a:hover {color:#17A8FA;}
 41 .ing_title a:link,.ing_title a:visited,.ing_title a:hover,.ing_title a:active{
 42     font-weight:bold;
 43 }
 44 div.commentform textarea {    width:450px;height:300px;ont-size:13px;}
 45 
 46 /*--------------http://zhaozi.cnblogs.com---------------*/
 47 .dayTitle{display:none;}
 48 .entrylistTitle,.thumbTitle,.PostListTitle,.forFlow h3 div,.galleryTitle{font-size:14px;font-weight:bold;margin-top:20px;text-align:left;}
 49 .entrylistDescription,.thumbDescription{margin-left:16px;}
 50 .postTitle,.entrylistPosttitle,.feedback_area_title{border-bottom:1px solid #ddd;font-family:'宋体','微软雅黑';font-size:14px;font-weight:bold;margin:20px 0 10px;}
 51 .postBody {color:#111;font-size:13px;line-height:170%;}
 52 .postBody span{color:#111;font-size:13px;line-height:1.5;}
 53 .postBody h5{font-size:10pt}
 54 .postBody p,.postCon p{margin:12px auto;}
 55 .postCon{overflow:hidden;font-size:13px;}
 56 .c_b_p_desc{line-height:170%;}
 57 .postCon a,.postBody a,.feedbackCon a{text-decoration:underline;color:#0066cc;}
 58 .postCon a:hover,.postBody a:hover,.feedbackCon a:hover{border-color:#999;}
 59 .postDesc,.entrylistItemPostDesc{border-bottom:0px dotted #999;color:#666;text-align:right;padding-bottom:5px;vertical-align:middle;}
 60 .postDesc a:link,.postDesc a:active,.postDesc a:visited{color:#666;text-decoration:none;}
 61 .postDesc a:hover{text-decoration:underline;}
 62 .PostList{float:none;clear:both;text-align:right;width:96%;margin:auto;padding:6px 0;overflow:hidden;border-bottom:1px dotted #ccc;}
 63 .postTitl2{float:left;}
 64 .postText2{text-align:left;color:#666;}
 65 .feedbackItem{padding:8px;border-bottom:1px dotted #ccc;}
 66 .feedbackManage{float:right;}
 67 .feedbackCon{margin-left:1em;color:#666;line-height:1.5;}
 68 .commentform td div span{margin-left:12px;}
 69 .gallery img{margin:8px;}
 70 #taglist{margin:20px auto;}
 71 .pfl_feedback_area_title{font-size:16px;margin:16px 0;font-weight:bold;}
 72 .pfl_feedback_area_title a{font-size:12px;color:#999;font-weight:normal;}
 73 .pfl_feedbacksubtitle{height:30px;}
 74 .pfl_feedbackname,.pfl_feedbackManage{float:left;margin:10px 20px 0 0;}
 75 .pfl_feedbackCon,.pfl_feedbackAnswer{clear:both;margin-left:12px;} 
 76 .btn_my_zzk{border:0px;}
 77 #sideBarMain{padding-left:0px;}
 78 #MyIng{padding-left:10px;}
 79 div#sideBar div#side_ing_block ul li{margin-left:0px;text-indent:0px;}
 80 #side_ing_block{line-height:180%;}
 81 #EntryTag  {margin-top:10px;}
 82 #blog_ad_google h3{margin-bottom:10px;}
 83 #digg_block a:link,#digg_block a:visited,#digg_block a:active { color: #015FB6; }
 84 #digg_block{color: #015FB6;}
 85 span.diggnum{color: #015FB6;}
 86 span.burynum{color: #015FB6;}
 87 #sideBarMain{border:1px solid #ddd; padding-left:5px;background-color:#FFFFFF; padding-bottom:20px; margin-top:-1px;}
 88 .post{ overflow:hidden}
 89 .c_ad_block,.ad_text_commentbox,#site_nav_under{ display:none;}
 90 .zhaozifooter{text-align:center;padding:10px; width:1028px; height:auto; border:1px solid #DDD; background-color:#FFFFFF;margin-left:auto; margin-right:auto; margin-top:10px;}
 91 .postTitle a{color:#1A64A2; background-image:url(http://kb.cnblogs.com/images/icons/arrow.png);background-repeat:no-repeat; background-position:left;padding-left:18px}
 92 .postTitle a:hover{color:#F60}
 93 .mySearch{ display:none}
 94 #ad_under_google{ display:none; overflow:hidden; width:0; height:0; color:#FFFFFF;}
 95 .title{FILTER: blur(direction=135,strength=8);font-weight:bold}
 96 .subtitle{FILTER: mask(color=#E1E4EC)
 97 shadow(color=#8C96B5,direction=135)chroma(color=#E1E4EC)
 98 }
 99 body{ text-align:center}
100 body *{ text-align:left}
101 #home{ margin-left:auto; margin-right:auto; width:1080px;}
102 /*--------------http://zhaozi.cnblogs.com---------------*/
复制代码
 
分类: Web
标签: css

ASP.NET

 
摘要: •Reference the Data Access block assemblies• Configure Data Access settings• Add the required Namespace• Create an instance of Database• Perform actions using the Database instance(1) includingMicrosoft.Practices.EnterpriseLibrary.Common.dll RequiredMicrosoft.Practices.Unity.dll RequiredMicrosoft.Pr阅读全文
posted @ 2011-06-16 16:58 天添 阅读(37) | 评论 (0)  编辑
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DelegateAndEvent{ public delegate void nDelegate(); public delegate void sDelegate(string str); public delegate void mulDelegate(string str); class Program { public delegate void eventDelegate(string str); pu阅读全文
posted @ 2011-06-14 19:03 天添 阅读(5) | 评论 (0)  编辑
摘要: Application.lock();if(Application["count"] == null){ Application["count"] = 1;}else{ Application["count"] += 1;}Application.unlock();阅读全文
posted @ 2011-06-10 17:44 天添 阅读(8) | 评论 (0)  编辑
摘要: function analyse(currentOperator,seriesName) { var url= "Analyse.aspx?CurrentOperator="+currentOperator+"&SeriesName="+seriesName; $('#dialog').empty(); var div = $('#dialog').append("<iframe frameborder=0 align=center src="+url+" scrolling=&阅读全文
posted @ 2011-06-01 17:58 天添 阅读(2) | 评论 (0)  编辑
摘要: public void CreateExcel(DataTable dt, string FileName, int pageSize, int pageNum) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.ContentType = "application/ms-excel"; resp.AddHeader("Content-Disposition"阅读全文
posted @ 2011-04-08 17:08 天添 阅读(10) | 评论 (0)  编辑
原文地址:https://www.cnblogs.com/Leo_wl/p/2513838.html