首页 > 数据库 >jvm+mysql索引优化+sql优化

jvm+mysql索引优化+sql优化

时间:2024-07-09 17:44:06浏览次数:15  
标签:操作数 int 方法 局部变量 线程 jvm sql 优化 Math

一、jvm---线程栈

 

 

每个线程都会从内存栈分配一块区域,这个区域里放了此线程变量(按方法,一个方法对应一块栈帧内存区域)。

Math.class字节码文件不是给人看的,idea中找到Math类,右键找到terminal,输入javap,底下-c对代码进行反汇编

命令:javap -c Math.class > math.txt

此时,Math类根目录下多了一个文件,是java虚拟机的汇编代码,可在官方查询命令的意思。

a=1的底层:

iconst:将int类型常量_1压入操作数栈     istore:将int类型存入局部变量1(实质:将常量1从操作数栈取出,存入变量a的内存)

程序计数器:程序马上要运行代码的行号(实质:内存地址),字节码执行引擎动态修改

iload_1:从局部变量中装载int类型值  iload_2:从局部变量中装载int类型值 iadd:从操作数栈弹出最上面俩值,进行add操作,然后push进操作数栈

 bipush 10:将10放进操作数栈

imul:执行int类型的乘法 -----》从栈顶弹出两个最新的操作数,将结果压回操作数栈

动态链接:存方法的入口地址,方法出口:存方法出口的地址,方法嵌套时,就指向了下一个方法地址

Math math = new Math();

局部变量表里装载一个math变量,堆里产生一个Math对象,math变量存的是Math对象的地址,所以它其实指向了这个对象。栈和堆的关系由此出来:局部变量存对象的地址,为指向关系。

方法区:1.8之前叫持久代,1.8之后叫元空间。常量+静态变量+类信息。

static类型的user变量指向new出来的User对象。也是有指向关系。

本地方法:由native修饰的方法,底层由c++实现。线程运行过程中,用到本地方法了,就从本地方法栈取一块内存空间给这个线程本地方法用。

 

紫色部分:线程私有的。栈,本地方法栈。程序计数器。

粉色部分:线程公有的。堆。方法区。

堆:年轻代:老年代=1:2。 其中年轻代:eden区:survivor区=8:1:1。当eden区对象放满内存后,触发gc,底层可达性算法。

标签:操作数,int,方法,局部变量,线程,jvm,sql,优化,Math
From: https://www.cnblogs.com/fengok/p/18055027

相关文章

  • 面试官:MySQL死锁是什么,如何解决?
    MySQL死锁概述定义:多个操作相互等待对方释放资源,导致无法继续执行的情况。场景:通常发生在多个事务同时试图锁定对方已锁定的资源时。MySQL锁的分类粒度分类:表级锁:锁定整个表,简单但并发能力低。行级锁:锁定特定行,开销大,可能死锁,但并发度高。页级锁:锁定数据库页,介于表级和......
  • MySQL 源码|LEX 结构体
    LEX结构体源码位置:(版本=MySQL8.0.37)sql/sql_lex.hsql/sql_lex.ccsql/sql_class.ccrouter/src/routing/src/sql_lexer.ccLEX对象当前有以下功能:包含了一些SQL命令的通用属性,例如:sql_command,数据变更语句语法中是否存在IGNORE,以及表列表query_tables包含了一些......
  • Mysql更新数据库密码
    首先登录数据库mysql-uroot-p1234qwer查找数据库用户表所有用户信息SELECT`Host`,`User`,authentication_string,password_last_changedFROMmysql.`user`;更新密码UPDATEmysql.`user`SETauthentication_string=PASSWORD('1234qwert')WHEREuser='root'AND......
  • MYSQL——mysql检索不包含字母U的数据
    2024/07/091.NOTLIKE2.ISNOT、<>、!=3.NOTIN如题,正确答案如下:SELECT*FROMyour_table_nameWHEREyour_column_nameNOTLIKE'%U%';今天写类似检索语句时,脑子突然一懵,写成了ISNOT'%UD%',如下:SELECT*FROMyour_table_nameWHEREyour_column_nameISNOT......
  • Mysql主从复制
    一、主从复制原理主从复制的相关程序:日志二进制日志中继日志(relaylog)线程主服务器:mysqldump线程(传输二进制日志给从服务器)从服务器:IO线程(接收二进制日志,写入中继日志),sql线程(读取中继日志,写入数据库,同步操作达到数据同步)点击查看代码主从复制原理:1.主节点负责......
  • mysql集群高可用架构MHA
    一、MHA概述1.为什么要用MHAMaster的单点故障问题2.什么是MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程......
  • 内核参数优化
    linux内核参数优化(网络模块)在Linux下调整内核参数,可以直接编辑配置文件/etc/sysctl.conf,然后执行sysctl-p命令生效文件内容如下:net.ipv4.ip_forward=1net.ipv4.conf.default.rp_filter=1net.ipv4.conf.default.accept_source_route=0kernel.sysrq=0kernel.core_......
  • 动态SQL
    mybatis中动态sql标签1:if标签  1)数值类型的判断不等于的判断://注意Interge类型的条件判断是否为空的时候一定不要加非空字符串判断,因为当你传的值为0的时候,mybatis会把它判断为空字符串<iftest="equipTypeId!=null">ANDt1.equip_type_id=#{equipTypeId......
  • 磁盘100%优化
    输入regedit,点确定。 在注册表中找到HKEY_LOACAL_MACHINE,并展开它。 接着找到SOFTWARE-Microslft-Dfrg,BootOptinizeFunction,并找到OptimizeComplete,双击它。   在弹出的对话框中将OptimizeComplete的值改为"no" 然后关闭注册表即可,重启后再查看磁盘占用......
  • JVM是如何创建一个对象的?
    哈喽,大家好......