可见性就是指当一个线程修改了共享变量的值时,其他线程能够立即得知这个修改。
AI时代,有人焦虑失业,有人偷偷变强,不写代码不烧脑~
相关语录
-
验证是连接阶段的第一步,这一阶段的目的是确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信息被当作代码运行后不会危害虚拟机自身的安全。
-
自JDK7起,原本存放在永久代的字符串常量池被移至Java堆之中,所以在JDK7及以上版本,限制方法区的容量对该测试用例来说是毫无意义的
-
GC日志开头的“[GC”和“[FullGC”说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。如果有“Full”,说明这次GC是发生了Stop-The-World的
-
Java堆用于储存对象实例,我们只要不断地创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么随着对象数量的增加,总容量触及最大堆的容量限制后就会产生内存溢出异常。
-
volatile变量读操作的性能消耗与普通变量几乎没有什么差别,但是写操作则可能会慢上一些,因为它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行
-
每个Class文件的头4个字节被称为魔数(MagicNumber),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。
-
只要能被invokestatic和invokespecial指令调用的方法,都可以在解析阶段中确定唯一的调用版本,Java语言里符合这个条件的方法共有静态方法、私有方法、实例构造器、父类方法4种,再加上被final修饰的方法(尽管它使用invokevirtual指令调用),这5种方法调用会在类加载的时候就可以把符号引用解析为该方法的直接引用。这些方法统称为“非虚方法”(Non-VirtualMethod),与之相反,其他方法就被称为“虚方法”(VirtualMethod)。
-
从如何判定对象消亡的角度出发,垃圾收集算法可以划分为“引用计数式垃圾收集”(ReferenceCountingGC)和“追踪式垃圾收集”(TracingGC)两大类,这两类也常被称作“直接垃圾收集”和“间接垃圾收集”
-
如果向CHA查询出来的结果是有多个版本的目标方法可供选择,则编译器
-
紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6个字节是次版本号(MinorVersion),第7和第8个字节是主版本号(MajorVersion)。

