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


    当系统加载一个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)  编辑
  • 相关阅读:
    无言
    计算机网络的所有课件
    Linux 分区
    Linux 文件管理权限
    DropDownList 控件
    CssClass初步语法了解
    BulletedList用途
    BulletedList项目控件基础CSS基础
    Checkbox与foreach循环
    RadioButton控件
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2513838.html
Copyright © 2020-2023  润新知