多线程
文章平均质量分 92
择维士
专注技术分享
展开
-
真实还原定位java内存OOM步骤
文章目录abstract问题现象头大的分析步骤如何获取内存dump?尝试1尝试2尝试3如何分析内存dump?根本原因学到的参考abstract自己做了很久的java开发了, 很久没有写关于内存泄漏/溢出相关的问题定位了. 本文会描述一个十分曲折的定位过程. 从本文里面可以学到:jdk11的内存dump如何分析大对象如何结合OQL还原真实的问题现场问题现象产品某一台服务器发现...原创 2019-12-26 16:57:09 · 1631 阅读 · 1 评论 -
Java拾遗01HashMap
这是一个拾遗系列, 觉得Java中有些比较有意思的点可以拿来记录一下 分享一下.Abstract半年前?, 对于从业Java快5年了,觉得自己已经比较了解HashMap了, 直到有一天去XX公司面试, 被问到(1)HashMap为什么会导致100%? 我回答到因为在扩容过程中可能导致死循环而导致CPU高. 然后又被问到(2)怎么导致的死循环? 额 这个具体就不知道了(3) 然后惊呆的...原创 2019-11-13 23:37:22 · 143 阅读 · 0 评论 -
Java中的BIO,NIO,AIO详解以及Echo实现示例
Abstract在本博客当中我们主要会分为如下几点:Java中的BIO NIO AIO是啥BIO NIO AIO实现的简单Echo client和serverNIO AIO 深入之内部实现NIO AIO的设计模式: Reactor 以及 Proactor本文所有的代码都可以在最后的github找到.IO 的分类BIOBIO 是 blocking io, 在jdk1.0的时候引...原创 2019-02-01 16:03:33 · 2686 阅读 · 0 评论 -
Java cpu 监控 分析
Abstract在这篇文章中我们会综合性的介绍如何监控JVM cpu, thread 级别cpu, 以及如何通过JFR技术来分析JVM的CPU 问题. 如何获取CPU这里我们会先介绍如何在进程内部获取JVM的CPU. 这里我们主要采用JVM 自带的JMX来实现对自己的监控.获取整个系统的JVM cpu可以通过调用mbean中的getProcessCpuTime方法来得到中...原创 2018-12-27 19:15:33 · 5814 阅读 · 0 评论 -
关于java中的double check lock
实现一个正确的单例模式在熟悉的单例模式中你或许会遇到下面的方式来实现一个单例:// version 1class Singleton { private static Singleton _INSTANCE static Singleton getInstance() { if (_INSTANCE == null) { _INSTANCE原创 2017-09-07 21:55:17 · 1727 阅读 · 2 评论 -
JVM OOM & JAVA finalizer 引发的OOM & Thread.stop
背景本文绝对干货. 某天发现客户环境一直有OOM发生,而且是阶梯状的内存增长. 比较郁闷. Abstract这个文章里面会描述以下几件事情: 1. 在java中有OOM应该怎么分析? 2. JAVA finalizer为什么会引发OOM? 3. 为什么不能使用Thread.stopJava中发生OOM应该怎么分析大多数时候Java都做得足够好. 但是没办法还是有可能会有OutOfMemor原创 2017-06-23 18:19:34 · 3899 阅读 · 1 评论 -
Java synchronized 中的while 和 notifyAll
问题1大多数人都知道常见的使用synchronized代码:synchronized (obj) { while (check pass) { wait(); } // do your business}那么问题是为啥这里是while而不是if呢? 这个问题 我最开始也想了很久, 按理来说 已经在synchronized块里面了嘛 就不需要了. 这个原创 2017-05-08 20:31:02 · 1909 阅读 · 4 评论 -
[翻译]Java Garbage Collection Basics Java 垃圾回收基础 目录
这一系列文章来自于原Oracle 上的java垃圾回收基础入门,写的很好 遂翻译了下.原文: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html#overview译文: 1. 概览 2. Java 技术与JVM 3. 描述垃圾回收 4. 分代的垃圾回收过程 5. 自己动手观翻译 2016-04-24 13:52:58 · 579 阅读 · 0 评论 -
[翻译]Java Garbage Collection Basics Java 垃圾回收基础 之2 Java 技术与JVM
Java 技术与JVMJAVA概述JAVA是Sun公司在1995年发布的一个编程语言和计算平台.并在工具/游戏/商业应用上大放异彩.Java在超过850 * 百万 的个人电脑, 在10亿级的设备上运行(包括了移动设备和TV).java有一系列关键组件组成,最终构建了Java平台.Java运行时版本当你下载java后,你得到了一个Java运行时环境(Java Runtime Environment,J翻译 2016-04-24 13:59:55 · 814 阅读 · 0 评论 -
[翻译]Java Garbage Collection Basics Java 垃圾回收基础 之1 概览
概览目标本基础教程覆盖HotSpot JVM如何实现GC.主要包括如下内容: (1)了解GC如何工作的. (2)使用VisualVM监控GC过程. (3)了解Java SE 7 Hotspot JVM中的GC 收集器.预估完成时间1小时.简介这个OBE(译注:SRY,不知道啥意思,应该是一个组织的意思???),覆盖Java 中Java虚拟机(JVM) 垃圾回收(Garbage Collecto翻译 2016-04-24 13:55:12 · 507 阅读 · 0 评论 -
有意思的分支预测
在stackoverflow上遇到一个有意思的问题,遂移植到国内. Why is processing a sorted array faster than an unsorted array?What is Branch Prediction? Consider a railroad junction:Image by Mecanismo, via Wikimedia Commons. Use原创 2016-03-06 12:05:23 · 1168 阅读 · 0 评论 -
关于正确使用读写锁的思考
使用读写锁可以大幅度提升性能,在读远大于写线程数目时, 本文主要是关于读写锁的一些疑惑 ,主要是实现缓存时,下面这段代码演示了常见的实现缓存的代码:(你可以在很多其他的博客中看到:) 我这里参考了:http://blog.csdn.net/yangfanend/article/details/7381530 这篇博客中的实现 如下:public class ReadWriteLockCach原创 2015-09-23 21:19:29 · 1114 阅读 · 2 评论 -
使用信号量实现的有界缓冲池BoundedBuffer
/** * author:gaoxingliang@outlook.com * created:2015年9月2日 下午8:19:08 */package datastruct;import java.util.concurrent.Semaphore;/** * 使用信号量实现的有界缓冲池 */public class BoundedBuffer<T>{ private原创 2015-09-02 21:44:45 · 2418 阅读 · 0 评论