Poison


  • 首页

  • 归档

  • 标签

  • 搜索
close
Poison

False Sharing

发表于 2021-08-14

处理器使用不同级别的缓存,当处理器从主内存读取值时,可能会将该值缓存以提高性能。实际上,大多数现代处理器不仅仅缓存请求的值,而是会将该值附近的数据同时进行缓存。这种优化基于空间局部性的思想,可以显著提高应用程序的整体性能。简单来说,处理器缓存工作在缓存行上,而不是对单个请求的值进行缓存。

我们可以看一个例子,假设有两个 CPU 核心 core A 及 core B 将要对内存临近位置上的两个变量进行访问,如下图:


阅读全文 »
Poison

Java Memory Model

发表于 2021-08-14

内存模型描述了程序的可能行为,实现可以自由地生成代码,只要程序的执行结果与内存模型预测的一致即可。这为实现者提供了执行代码转换的自由,包括重排序及删除不必要的同步。

阅读全文 »
Poison

volatile

发表于 2021-08-13

通常,为了确保共享变量一致且可靠地更新,线程应该通过获取锁来确保它独占使用这些变量,该锁通常对这些共享变量强制互斥。Java 编程语言提供了第二种机制,即 volatile 字段,在某些场景下,它比使用锁更方便。一个字段可以被声明为 volatile,在这种情况下,Java 内存模型确保所有线程看到变量的一致值。

阅读全文 »
Poison

FileLock

发表于 2021-08-11

File locks are held on behalf of the entire Java virtual machine. They are not suitable for controlling access to a file by multiple threads within the same virtual machine.

References

FileLock (Java Platform SE 8 )
OverlappingFileLockException (Java Platform SE 8 )
Is FileLock in java safe across multiple threads within the same process or between different processes or both?
Example of inter-process and inter-thread file locking in Java · GitHub

Poison

Factory

发表于 2021-08-09

最近处理应用性能问题时分析栈帧时发现部分线程名称为类似 pool-15-thread-2841 的模式,经过排查,原因为开发创建自定义线程池时未指定线程工厂导致,默认会使用 Executors.defaultThreadFactory() 实现。

阅读全文 »
1…181920…27

131 日志
119 标签
GitHub LeetCode
© 2025 Poison 蜀ICP备16000644号
由 Hexo 强力驱动
主题 - NexT.Mist