![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
overlambda
这个作者很懒,什么都没留下…
展开
-
java 为何volatile无法解决a++原子性问题的终极理解!
首先我们来解释为什么会有可见性问题:简单来说就是每个线程都含有各自的多层缓存,共享一个主内存。对变量的操作是在工作内存中完成的,所以各个线程不清楚其他线程的具体操作,也就会出现可见性问题。 java内存模型(java memory model)将下图的L1 cache、L2 cache等视为工作内存,而L3 cache、RAM视为主内存。注意这里的registers(寄存器),它是完成具体变量操作的地方。 所以大家就记住总归有三个存储数据的地方:寄存器,工作内存和主内存。其中寄存器和工作内存为线程私原创 2020-09-08 01:02:08 · 983 阅读 · 3 评论 -
java 强引用的对象什么时候回收?
关于强引用,大家都知道这么一段话:强引用就是指在程序代码之中普遍存在的,JVM必定不会回收这个强引用的对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象那么就有一个问题,Object obj=new Object(),obj作为强引用存在虚拟机栈中,而new Object()作为对象存在于堆中,当obj的作用域结束,对应的虚拟机栈消失,obj引用也同时消失,但new Object()对象却仍然存在于堆中,“JVM必定不会回收这个对象” ,那jvm不是很容易就OO原创 2020-08-19 15:38:11 · 3512 阅读 · 3 评论 -
Java 继承和this的思考
子类继承父类的实质首先, 创建子类对象的时候,先会创建父类对象( 这一说法存疑,不过大家都认同在内存中有一块区域,这块区域是专门存放父类才有的各种属性和方法),像是一个盒子,里面有父类的成员变量和方法,私有和公有等,然后再创建子类对象,注意,这个子类对象是包在父类对象外面的一个盒子,相当于是盒子套了一个盒子。与此同时,父类的私有方法和变量被隐藏了,也就是子类只能访问到父类的公有属性。当然,通过父类的getter、setter方法可以访问到私有属性。this关键字大家都知道this实际上是指向本对象地原创 2020-08-18 19:44:57 · 256 阅读 · 0 评论