
JVM
文章平均质量分 86
晓龙的Coding之路
路漫漫兮其修远兮吾将上下而求索
展开
-
关于volatile关键字为什么不能保证原子性(图文分析)
对于多线程的数据访问,其实是跟我们的JMM内存模型有关系,在java内存模型当中的定义,所有的数据都会写到主内存当中,其它的数据需要操作时,将主内存的数据copy一份到自己线程私有的内存空间使用,操作完成后再将数据写回到主内存当中。,因为线程2感知不到主内存的变化,所以打印的值不会收到影响。,因为加了volatile,所以线程能感知到主内存的变化,不会再使用线程内保存的数据,会从主内存读取。1.加载数据到本地线程(如果这个操作之前,数据已经写回到主内存,就能保证a的原子性,但这是不可能的)原创 2024-08-16 22:02:43 · 1144 阅读 · 0 评论 -
如何在项目当中进行JVM调优
调整调整了一个比较小的堆内存,只是作为演示,给大家看一下日志的数据。对比上面的数据,我们发现内存过小,吞吐量急剧下降,Gc的时间也变长。根据上面的信息,我们可以看到题主的电脑的gc的相关信息,题主使用的默认的堆大小。gcviewer是一个对于gc日志的调优工具,我们可以在github上去下载源码自己编译成jar包,或者直接下载编译好的jar包。设置完成后,我们启动项目就可以在设置的目录找到打印的gc文件日志。在项目启动之前设置启动参数,具体的参数设置,请参考。原创 2024-08-20 12:35:20 · 1657 阅读 · 0 评论