JVM
文章平均质量分 56
mummyFly
这个作者很懒,什么都没留下…
展开
-
关于Java类中变量的初始化
public class Test { int a; static int b = 123; final static int c; void init(){ int d; } public static void main(String[] args) { int e; System.out.pr...原创 2018-03-09 13:59:52 · 589 阅读 · 0 评论 -
史上最全的i++与++i的详细解析,一篇就够
首先放结论,i++线程不安全可能很多人都知道,但++i却是天然的线程安全操作,大家有想过为什么么。首先要明白一点,多线程模式下的安全与否,其根本决定因素是该操作是否是原子操作,所谓的原子操作,就是一个操作不可拆分,放到字节码层面,也就是说一个操作只有一个字节码完成。例如典型的赋值操作”=“。为了解释i++与++i这两个近亲兄弟的差异,我们直接看二者编译后的字节码 i++ 0: al...原创 2018-05-09 18:41:27 · 1852 阅读 · 0 评论 -
JAVA多线程学习笔记
一、如何同时启动多个线程?start以后循环join至主线程 CyclicBarrier中的await屏障点方法二、volatile关键字线程安全需要同时满足三个特性,可见性,原子性,有序性,volatile只满足了可见性和有序性 多线程执行模式中,线程对私有实例变量的访问只会访问栈的私有内存,不会去主内存查询,volitale强制把更新推送到各个栈的私有内存中 volatile可...原创 2018-11-26 19:35:23 · 153 阅读 · 0 评论 -
JVM学习笔记
一、方法区与常量池Java中的方法区实际上是堆内存的一个逻辑划分,属于堆的一部分,用来存放虚拟机加载的类信息,常量,静态变量,JIT编译后的代码数据。虚拟机内存模型中不存在常量池的概念,但是方法区中存在一个叫做运行时常量池的部分。常量池是Class文件中的一个概念,用来存放编译期生成的各种字面量与符号引用,这部分内容在类加载后存入运行时常量池。值得一提的是,运行时常量池具有动态性,并不是只...原创 2018-12-12 20:18:28 · 136 阅读 · 0 评论 -
不可逆的类初始化过程
原文链接:https://mp.weixin.qq.com/s/HK5JsmGjvOe_93TwlmZNdg类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解;说简单,大致都知道类加载有这么几个阶段,loaded->linked->initialized,为了让大家能更轻松地知道我今天说的这个话题,我不详细说类加载的整个过程,改天...转载 2018-12-14 10:37:28 · 149 阅读 · 0 评论 -
Java字节码
原文链接:https://blog.csdn.net/qbg19881206/article/details/22896935这篇文章能让你对Java字节码有个了解,这可以帮你成为一个更好的程序员。就像C或C++编译器将源码编译为汇编码,Java编译器会将Java源码编译成字节码。Java程序员应该花费时间去理解什么是字节码,它是怎样工作的,更重要地是,Java编译器产生了什么样的字节码。在某...转载 2018-12-14 14:44:29 · 143 阅读 · 1 评论 -
从==和equals的区别,浅谈Java中的引用
先上两个面试中经常遇见的问题:1.给出以下代码执行后的打印输出:public class lll { static void change(int i){ i=10; } static int changeReturn(int i){ i = 10; return i; } static class ...原创 2018-12-21 14:02:19 · 271 阅读 · 0 评论