
jvm虚拟机
hshpy
这个作者很懒,什么都没留下…
展开
-
spring 面试题
1.垃圾 1.ioc 控制反转,容器,bean对象。原创 2021-11-24 14:13:00 · 215 阅读 · 0 评论 -
java多线程
cpu模型 数据从硬盘加载-->主内存-->cpu 缓存-->寄存器--》cpu JMM内存模型 java线程内存模型和cpu缓存模型类似,都是会把主内存的数据,拷贝到共享变量副本里面。 给大家举个例子看一下: 第一个线程一直没有结束,因为它把数据拷贝到自己的工作内存区域,不起作用。另外一个线程是看不到变量被修改的. 怎么解决哪?java里面volatile,保证线程之间修改过内存数据,其他线程可见性和有序性,但是不能保证原子性。保证原子性的是通过锁,机制来保证的.原创 2021-11-17 16:44:23 · 211 阅读 · 0 评论 -
JVM内存模型(一)
一、类加载模型 运行内存 1.堆用来创建对象和数组,线程共享。 2.栈是针对的每个线程,栈帧:是每个方法。 二、栈 一、栈枕中的局部变量表&操作数栈 通过javap -c 命令编译对应的汇编语言 解读commpute() 0.将int类型的常量1 压入操作数栈。 1.将操作数1存入局部变量a中。 2.同理2也一样。 3.iload_1 从局部变量1中装载int类型,到操作数栈中。 4.iadd执行int类型的加法。遇到iadd指针从操作数栈中,...原创 2021-11-15 19:15:38 · 382 阅读 · 0 评论 -
java虚拟机 Class类文件的结构
1.魔数 魔数的作用就是确定这个类是否能被jvm虚拟机加载,每个class头4个字节表示,十六进制值为0xCAFEBABE 为什么不用后缀名称哪?而是使用魔数哪?因为文件扩展名称容易改动。 第5和第六个字节表示次版本号 第7,8字节表示的是主版本号,就是决定jdk的编译版本的,我用的是jdk1.7,这个版本号的值16进制是33,十进制是51.就是根据它的大原创 2017-06-22 21:25:23 · 205 阅读 · 0 评论 -
常量池的理解
1.我们知道java文件,但是java程序最大是多少哪? 上一节我们看到了,魔数,还有java版本号等,但是接下来,剩余的字节表示什么含义哪,在版本号之后的,是常量池,常量池用u2(占用2个字节大小)类型数据,表示有多少常量,它是从1开始的,而不是从0开始的大小。0表示不引用这个常量池项目。这14中类型,每种类型有个表,类型用一个u1表示。查询到u1之后,然后在查对应的每个类型的表,查看字节数,原创 2017-06-23 09:41:31 · 302 阅读 · 0 评论 -
java和分布式总结
定位CPU占有率高,内存占用高。 定位问题,top查找内存,cpu使用率,然后通过ps -mq pid -o HTREAD,tid,time,%mem 查询具体到某个线程,然后通过printf,把具体到tid高的打印成16进制。然后通过jstack -pid | grep tid 查询到具体某个线程,定位到具体代码。原创 2017-06-13 21:28:21 · 238 阅读 · 0 评论