![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
文章平均质量分 89
jvm
ZNineSun
大道至简,返璞归真
展开
-
Java 序列化和反序列化为什么要实现 Serializable 接口?
其实我上面思考的过程大家也可以借鉴,不要一上来就要去编码,否则会使自己特别的局限。下面我们来一一解答这几个问题.原创 2022-08-26 17:10:31 · 265 阅读 · 0 评论 -
一文带你彻底了解synchronized 和 Lock
synchronize在语义上很清晰,可以进行很多优化,有适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。的时候,是会消耗CPU资源的。所以自旋必须要有一定的条件控制,否则如果一个线程执行同步代码块的时间很长,那么等待锁的线程会不断的循环反而会消耗CPU资源。在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时(即有大量线程同时竞争),此时Lock的性能要。在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。...原创 2022-08-08 00:56:15 · 2270 阅读 · 0 评论 -
带你彻底认识String
很明显两个之间的引用不是指向同一个地方,我在上面也提到了,不知道大家有没有注意,使用newString创建String时会先在堆上创建字符串对象,驻留到字符串常量池,并将字符串的引用压入操作数栈,所以在将字符串驻留到常量池时发现已经有ABCD这个字符串,于是直接返回ABCD的地址,但是这个地址只是保存在堆中,栈里存放的还是堆里创建的对象地址。最后,当执行Strings2="Hydra"时,发现字符串常量池中已经驻留这个字符串,直接返回对象的引用,因此s1和s2指向的是相同的对象。.........原创 2022-07-20 00:25:11 · 294 阅读 · 0 评论 -
jvm堆内存的分代划分
java中的内存的分配和释放都是由虚拟机自动管理的,JVM的对象回收策略也是基于分代的思想。这样做的目的就是为了提高垃圾回收的性能,避免对堆中的所有对象进行检查时所带来的程序的响应的延迟,因为jvm执行GC时,会stop the word,即终止其它线程的运行,等回收完毕,才恢复其它线程的操作。基于分代的思想是:jvm在每一次执行垃圾收集器时,只是对一小部分内存对象引用进行检查,这一小部分对象的生命周期也更短,从而加快了垃圾收集的性能。下面我们将来介绍java中的基于代的内存回收算法的基本策略:1.原创 2022-01-12 10:09:08 · 1831 阅读 · 0 评论 -
jvm垃圾回收策略
1.垃圾回收算法(也叫垃圾回收策略)在jvm中用于垃圾回收的算法总共有三种:1.标记清除算法2.标记复制算法3.标记整理算法2.垃圾回收判定规则那么问题来了,什么样的对象在jvm中才能算是垃圾呢?在java中,有两种判断当前对象是否是可以回收的垃圾:1.引用计数法2.可达性分析法下面我们先看看什么是引用计数法2.1 引用计数法为对象添加一个引用计数器存储到一份额外的内存区域中进行记录,当有地方引用这个对象时,引用计数器的值就会+1,当引用失效时,计数器的值就会-1;当计数器的原创 2022-01-10 19:39:49 · 919 阅读 · 0 评论