zoukankan      html  css  js  c++  java
  • 类型,对象,线程栈和托管堆在运行时的相互关系

    当系统加载一个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)  编辑
  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2513838.html
Copyright © 2011-2022 走看看