博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(3)java棧
阅读量:7300 次
发布时间:2019-06-30

本文共 1312 字,大约阅读时间需要 4 分钟。

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

转载地址:http://bsbnm.baihongyu.com/

你可能感兴趣的文章
SimpleDateFormat
查看>>
epoll_wait会被系统中断唤醒
查看>>
Java设计模式-代理模式
查看>>
Android--sharepreference总结
查看>>
在博客园已经一年多时间了,今天开通博客了!
查看>>
给定矩阵行数和矩阵列数,顺时针打印矩阵(从0开始)
查看>>
个人阅读作业week7
查看>>
Java数据类型(2)------自动封装拆箱
查看>>
java基本语法
查看>>
oracle多表关联多字段update
查看>>
欧拉函数
查看>>
AngularJS源码解析4:Parse解析器的详解
查看>>
HTTP错误 404.17 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理...
查看>>
busybox inetd tftpd
查看>>
busybox reboot 无效
查看>>
hdu6312 2018杭电多校第二场 1004 D Game 博弈
查看>>
制作jar文件
查看>>
Jquery 实现回车键触发功能
查看>>
netty-socketio使用namespace
查看>>
在div中设置文字与内部div垂直居中
查看>>