• 4、Jvm(栈)


    Jvm(栈)

    1、栈是一种数据结构(jvm的栈是线程级的(一个线程一个栈))

     

    *栈:先进后出

    *队列:先进先出(FIFO(Fist input Fist Output))

     

    *栈 :栈内存管理的是程序的运行(若是最后的mian方法都出栈了,那就程序结束了)。栈的

    栈里面放什么:8大基本数据类型,对象引用,实例的方法

    栈的运行原理:栈帧(就是将我们的里面的方法那些放大)

    里面有:方法索引(index),输入输出参数,本地变量,class引用,父帧,子帧

    第一步:我们先用下面的方法,压栈。这个方法的子帧指向上面的那个方法咯,先将我们指向的子帧弹出去,(上面的方法的父帧是指向下面的方法的)

    第二步:就是这上面方法的父帧也就是下面的这个方法也弹出咯

    !!!栈肯定是没有gc的,只有方法区和对才有gc垃圾回收器的。(而且99%是调优堆)

     

    2、思考一个问题,为什么main方法先执行最后结束(这里就是将我们这些方法压栈啊,出栈就是这方法执行完了)

     

     

    3、!!!这里逻辑就是,外面最开始main方法和test方法。我们最开始先执行main方法。将main方法压栈,然后是main调用test方法,再将test方法压栈(在main方法上面)。栈先进后出。所以是上面的test()方法(方法执行完就出栈)先出栈。然后才是main方法(执行完出栈)后出栈。最后当这个main方法出栈了这个程序就完了

    4、栈溢出这个东西

     

     

     

    1. 这里的逻辑是,我们test这个方法去调用a方法,将a方法压进栈(在test的上面)再是a调用test()方法。再将这个test方法压栈进去(在a的上面),这样栈中的数据就会一直增加咯。栈移除

    6、栈+堆+方法区的交互关系(我们堆我们没去对属性赋值)

     

  • 相关阅读:
    [Nacos] Nacos Server处理心跳请求 (八)
    java开发之个人微信的二次开发
    Day08--自定义组件的样式
    贼简单的Android计时工具,老铁,还不试用起来。
    Unity技术手册-编辑器基础入门万字大总结
    文件路径操作
    鲸探发布点评:9月19日发售《中国大飞机C919》数字藏品
    jQuery设置获取样式css()
    当开源项目 Issue 遇到了 DevChat
    脚本之美│VBS 入门交互实战
  • 原文地址:https://blog.csdn.net/logtcm4/article/details/127743711