![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
贤云Ye鹤
这个作者很懒,什么都没留下…
展开
-
并发情况下分配内存引发的线程不安全的解决办法
把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存,哪个线程要分配内存,就在哪个线程的本地缓冲区中分配,只有本地缓冲区用完了,分配新的缓存区时才需要同步锁定。:并发情况下,可能出现正在给对象A分配内存,指针还没来得及修改,对象B又同时使用了原来的指针来分配内存的情况。加上失败重试的方法保证更新操作的原子性,比较和交换;不加锁,通过while(true)死循环来判断对象新的地址。本地线程分配缓冲(TLAB 默认开启)原创 2023-02-23 17:09:18 · 158 阅读 · 0 评论 -
如果java程序变慢了,应该怎样去解决呢?
如果我们在运行的过程中发现java程序变慢了,一般来说都是内存不够了,这个时候可以去查看是否有大对象,资源连接是否释放掉,网络io,或者磁盘io链接释放不掉,也会出现变慢的情况,还有的时候是因为操作系统慢了,jvm运行程序本地方法栈也可能会消耗操作系统的本地内存(磁盘、网络io,需要缓冲区)两个独立的硬件之间想要通信需要建立连接,相当于建立了一个钥匙通道,存对方的钥匙需要占据内存空间,一般有close操作(比如jdbc,上传下载),如果不关闭的话,内存就会消耗越来越多,导致内存不够。原创 2023-02-23 17:07:28 · 1520 阅读 · 0 评论 -
G1收集器和CMS收集器的理解及其区别
G1收集器和CMS收集器的理解及其区别原创 2023-01-02 20:46:23 · 232 阅读 · 0 评论 -
JVM垃圾收集器
JVM垃圾收集器原创 2023-01-02 20:41:17 · 73 阅读 · 0 评论