java棧和函数调用的关系图

【名词解释】
--->java棧是一块线程的私有空间
--->java的棧是先进后出的数据结构。函数返回,则该函数的棧帧被弹出。
--->一个函数对应一个棧帧,一个棧帧里包含局部变量表,操作数棧,棧数据区

【行为解释】
--->每次函数调用都会生成相应的棧帧,从而占用一定的棧空间,因为棧空间不足,那么函数调用自然无法继续进行下去。当请求的棧深度大于最大可用深度时,系统会抛出StackOverflowError的棧溢出错误

【异常】
--->棧内存溢出java.lang.StackOverflowError

【参数设定】
--->-Xss128k 代表线程的最大棧空间为128K

【棧帧包含的内容解释】
《局部变量表》
        --->保存所指函数的局部变量,参数。函数局部变量和参数越多则棧帧越大,所占棧空间越多,影响函数的嵌套调用次数。
        --->long和double类型的局部变量占用2个字大小。
        --->int,short,byte,对象引用等占用1个字大小
        --->字:计算机内存中占据一个单独内存单元编号的一组二进制串。一般32位计算机上一个字为4个字节的长度
        --->每个局部变量表中有:作用域范围,所在槽位(索引,变量名,数据类型)后边变量槽位可复用前边已经失去作用域变量的槽位,达到节省空间的目的。
/**
         *
         * @param a
         * @param b
         * 局部变零表中:this ,a,b,c,d
         * 槽位:this(0),a(1),b(2),c(3),d(4)
         * 所站字的大小为:5个字
         *
         */
        public static void test1(String a,int b){
                int c=0;
                System.out.println("Test2.test1()"+c);
                long d=2;
        }
        
        /**
         *
         * @param a
         * @param b
         * 局部变零表中:this ,a,b,c,d
         * 槽位:this(0),a(1),b(2),c(3),d(3)
         * 所站字的大小为:4个字
         */
        public static void test2(String a,int b){
                if(true){
                        int c=0;
                        System.out.println("Test2.test2()"+c);
                }
                int d=2;
        }

《操作数棧》
        --->操作数棧也是棧帧中重要的内容之一,主要保存计算过程的中间结果,同时作为计算过程中变量临时存储空间
        --->先进后出的数据结构

《帧数据区》
        --->访问常量池的指针,方便程序访问常量池
        --->异常处理表。当程序发生异常,根据该表查找相应的异常,进行处理

棧上分配:
        --->是java虚拟机提供的一项优化技术,基本思想:对于那些线程私有的对象(这里指不可能被其他线程访问的对象),可以将他们打散分配在棧上,而不是分配在堆上。分配在棧上的好处是可以在函数调用结束后自行销毁,而不需要垃圾回收器介入,从而提高系统性能。
        --->棧上分配的一个技术基础是进行逃逸分析。逃逸分析的目的是判断对象的作用域是否有可能逃逸出函数体。

(3)java棧的更多相关文章

  1. 【JVM】java棧

    java棧和函数调用的关系图 [名词解释]--->java棧是一块线程的私有空间--->java的棧是先进后出的数据结构.函数返回,则该函数的棧帧被弹出.--->一个函数对应一个棧帧 ...

  2. (1)java虚拟机概念和结构图

    java虚拟机解构图一 java虚拟机解构图二 java虚拟机结构图三 [1]类加载系统        --->负责从文件系统或网络中加载class信息,存放至方法区的内存空间[2]java堆  ...

  3. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  4. Java HttpClient伪造请求之简易封装满足HTTP以及HTTPS请求

    HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 jav ...

  5. Java并发编程(一)线程定义、状态和属性

    一 .线程和进程 1. 什么是线程和进程的区别: 线程是指程序在执行过程中,能够执行程序代码的一个执行单元.在java语言中,线程有四种状态:运行 .就绪.挂起和结束. 进程是指一段正在执行的程序.而 ...

  6. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  7. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  8. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  9. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

随机推荐

  1. Kinetic使用注意点--group

    new Group(config) 参数: config:包含所有配置项的对象. { x: "横坐标", y: "纵坐标", width: "宽度&q ...

  2. 彻底卸载网易UU网游加速器的方法

    昨天跟朋友一起玩游戏,网速感觉不怎么好就下了一个免费的网易UU加速器来给对战平台加速,结果加速了以后网速更差,我晕,于是想卸载,可这个加速器口只有一个exe文件,不用安装,但在第一次加速时记得安装了一 ...

  3. maven3.1安装及配置

    1.首先下载maven3,并安装 2.环境变量配置与JAVA_HOME的配置一样 3.打开MyEclipse preferences>>Maven4MyEclipse>>Mav ...

  4. 简单3d RPG游戏 之 004 攻击(一)

    功能:实现点击键盘F键,怪物血量条减少,并且假定是近战,需要对距离进行判断,距离小于一定值的时候按F才会减少怪物的血条. 新建c#脚本PlayerAttack,绑定到Player,并在unity里将敌 ...

  5. Mybatis的分页查询

    示例1:查询业务员的联系记录 1.控制器代码(RelationController.java) //分页列出联系记录 @RequestMapping(value="toPage/custom ...

  6. 团体程序设计天梯赛-练习集L1-005. 考试座位号

    L1-005. 考试座位号 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 每个PAT考生在参加考试时都会被分配两个座位号,一个 ...

  7. php构造函数construct用法注意事项

    <?php class A { //特别注意,这里的下划线为两个 function __construct() { echo "I am the constructor of A.&l ...

  8. BZOJ 3533 sdoi 2014 向量集

    设(x,y)为Q的查询点,分类讨论如下:1.y>0:  最大化a*x+b*y,维护一个上凸壳三分即可 2.y<0:最大化a*x+b*y  维护一个下凸壳三分即可 我们考虑对时间建出一棵线段 ...

  9. WebViewJavascriptBridge 原理分析

    WebViewJavascriptBridge 原理分析 网上好多都是在介绍 WebViewJavascriptBridge如何使用,这篇文章就来说说 WebViewJavascriptBridge ...

  10. ajax跨域访问的解决方案

    今天的工作中要访问摄像机内部的一个web站点,这就涉及到jquery的ajax跨域访问的问题.我使用的是jquery1.7的版本,下面总结如下: 问题一:一开始用IE调试,总是返回No Transpo ...