从内存泄漏到并发问题:6 个 Java 性能小技巧
在我们的例子中,最直观的表现是出现**OutOfMemoryError**堆错误,其次是性能逐渐下降。引起Java内存泄漏的原因多种多样,识别问题的第一步是分析内存溢出错误,判断是由于设计不良导致的内存不足,还是真正的内存泄漏。我们首先关注可能的主要原因,例如静态变量、集合以及声明为静态的大对象,它们可能在应用程序的整个...
Java面试之Java锁
1.乐观锁本身是不加锁的,只是在更新时判断一下数据是否被其他线程更新了,AtomicInteger便是一个例子。2.有时乐观锁可能与加锁操作合作。例如MySQL在执行update时会加排它锁。但这只是乐观锁与加锁操作合作的例子。公平锁。是指按照请求的顺序来获取锁,即先请求的线程先获取锁。在Java中,ReentrantLock和Reentrant...
Apache 开源库中的死锁故障排除
图3:fastThread指向的死锁该工具指出了处于死锁状态的两个线程的堆栈跟踪。下面是这两个线程的堆栈跟踪:"APP_Thread_50_WorkerTask_pool-5-thread-6"#1899prio=5os_prio=0tid=0x00007f894c405555nid=0x44d1waitingformonitorentry[0x00007f88e9c44000]java.lang.Thread.State:BLOCKED(on...
5000字 | 24张图带你彻底理解Java中的21种锁
序号锁名称应用1乐观锁CAS2悲观锁synchronized、vector、hashtable3自旋锁CAS4可重入锁synchronized、Reentrantlock、Lock5读写锁ReentrantReadWriteLock,CopyOnWriteArrayList、CopyOnWriteArraySet6公平锁Reentrantlock(true)7非公平锁synchronized、reentrantlock(false)8共享锁ReentrantReadWrit...
Java工程师的成长路线图是什么?| 极客时间
第18讲|什么情况下Java会产生死锁?如何定位、修复?第27讲|Java常见的垃圾收集器有哪些?我建议不要满足于这些表面的特征,要学会用白盒的视角看待技术内部,系统性的思路掌握普遍规律。即使未来你不在一线编码,或者未来不再使用Java,同样的思维习惯和积累也是很有帮助的。
夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及...
Java多线程实战多线程的实现publicclass多线程实例{//继承thread@Testpublicvoidtest1(){classAextendsThread{@Overridepublicvoidrun(){System.out.println("Arun");}}Aa=newA();a.start();}//实现Runnable...