JVM虚拟机栈--还在死记硬背???

JVM虚拟机栈--还在死记硬背???

JVM虚拟机栈解析

JVM虚拟机栈主要包含:局部变量表、操作数栈、动态链接、出口等。

下面通过代码、指令还有图来分析虚拟机栈是个什么东东。

/** 
 * @auther: lawt 
 * @date: 2018/11/13 19 
 * @Description: 
 */
public class TestClassRunData {    private static final String STR = "0000hhhh";    private  String string = "aaaa";     public static void test1(){        int a=1;        Object object=null;        test1();    }    private static void test(int a) {        int b = 0;        int id = a;        System.out.println(id);        int c = b + id;        System.out.println(c);    }    public static void main(String[] args) {        int a = 1999;        test1();    }}
javap -verbose TestClassRunData > log.txt

查看log.txt内容

www.zeeklog.com  - JVM虚拟机栈--还在死记硬背???

局部变量表:

局部变量表存放了编译期可知的各种基本数据类型和对象引用。

操作数栈:

用于存储中间计算结果。

动态链接:

当遇到方法调用时,需要将参数压入操作数栈,并通过方法表找到对应的方法地址。

方法出口:

  1. 代码里的return语句
  2. 异常情况--代码里抛异常

每个线程跟JVM运行时数据区的关联图:

www.zeeklog.com  - JVM虚拟机栈--还在死记硬背???

www.zeeklog.com  - JVM虚拟机栈--还在死记硬背???

虚拟机栈的总结:

  • 每个线程一个栈
  • 每个栈里包含:多个栈帧
  • 每个栈帧里包含:局部变量表、操作数栈、动态链接、方法出口

每个局部变量空间为32位,那么64位长度的long和double类型的数据会占用2个局部变量空间。

reference类型:它不等同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置。

看完上面貌似有点乱,但是足以彻底理解虚拟机栈,强烈建议结合图一起理解。

Read more

印度统治阶级锁死底层人的5大阳谋

印度统治阶级锁死底层人的5大阳谋

基于社会学和心理学视角: 1. 情感道德: 统治阶级通过塑造道德规范和情感价值观,引导底层人群的行为。例如,宣扬“勤劳致富”“忍耐美德”等观念,让底层人接受现状并自我约束。这种道德框架往往掩盖结构性不平等,使人们将个人困境归咎于自身而非系统。 2. 欲望控制: 通过消费主义和媒体宣传,统治阶级刺激底层人的物质与社会欲望(如名牌、地位),但同时设置经济壁垒,使这些欲望难以实现。底层人被困在追求“更好生活”的循环中,精力被分散,无法聚焦于挑战权力结构。 3. 情绪煽动: 利用恐惧、愤怒或民族主义等情绪,统治阶级可以通过媒体或公共事件转移底层人对社会问题的注意力。例如,制造外部敌人或内部对立(如阶层、种族矛盾),让底层人内耗而非联合反抗。 4. 暴利诱惑: 通过展示少数“成功案例”或快速致富的机会(如赌博、投机),诱导底层人追逐短期暴利。这种机制不仅让底层人陷入经济风险,还强化了对现有经济体系的依赖,削弱长期变革的可能性。 5. 权力震撼: 通过展示统治阶级的权力(

By Ne0inhk