![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 78
烈冬-冰夏
这个作者很懒,什么都没留下…
展开
-
记一次logback导致服务无响应排查过程
1. 前沿记录最近收到测试环境服务无响应处理过程。2. 定位2.1 排查服务资源使用情况通过top命令和阿里云监控发现服务cpu和资源都正常,第一反应是死锁。2.2 导出线程信息通过jstack -l命令导出线程信息发现服务所有响应到卡住logback的log上,因为以前也遇到logback死锁导致类似异常,发现服务的logback版本是1.1.11版本(该版本有死锁bug)后,愉快的升级到1.2.3版。然而很快的服务还是出现无响应。再仔细观察了logback配置后发现有配置console,又愉原创 2021-03-27 22:50:49 · 3249 阅读 · 1 评论 -
记一次线上CPU报警排查过程
记一次线上CPU 100%问题1. 前言记录最近收到线上服务cpu100%报警处理过程。2. 定位2.1 先恢复服务保留线程保留1台机器,其他机器重启恢复服务2.2 定位cpu使用率高的线程通过top -Hp pid定位线程2.3 定位代码通过jstack导出线程快照,将高线程id转化为16进制查找(22699转58ab),发现是gc导致cpu爆满,估计可能是内存泄露问题2...原创 2020-03-31 23:23:12 · 954 阅读 · 0 评论 -
多线程调优
上下文切换是什么分时系统中,一个线程被暂停剥夺使用权,另外一个线程被选中开始或者继续运行的过程就是上下文切换。一个线程的状态由 RUNNING 转为 BLOCKED ,再由 BLOCKED 转为 RUNNABLE ,然后再被调度器.选中执行,这就是一个上下文切换的过程。线程生命周期线程主要有“新建”(NEW)、“就绪”(RUNNABLE)、“运行”(RUNNING)、“阻塞”(BLOC...原创 2019-09-25 16:35:41 · 293 阅读 · 0 评论 -
java中static、final、static final的区别
finalfinal可以修饰:属性,方法,类,局部变量(方法中的变量)final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。final修饰的属性表明是一个常数(创建后不能被修改)。final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。f...原创 2019-01-05 12:19:27 · 199 阅读 · 0 评论 -
Java常量池理解与总结
#1.什么是常量池##1.1静态常量池 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间,主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的常量值等,符号引用则...原创 2019-01-05 12:00:07 · 140 阅读 · 0 评论 -
JVM 调优参数详解(转)
GC有两种类型:Scavenge GC 和Full GC1、Scavenge GC 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,堆的Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor的两个区中。2、Full GC 对整个堆进行整理,包括Young、Tenured和Perm。Full GC 比Scav...原创 2016-10-09 13:39:58 · 128 阅读 · 0 评论 -
jstat查看jvm的GC情况(转)
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path. jstat 1....原创 2016-10-09 13:38:18 · 95 阅读 · 0 评论 -
SimpleDateFormat线程安全问题原因与解决方案
1.原因SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread ...原创 2016-09-22 16:54:33 · 257 阅读 · 0 评论 -
<深入理解Java虚拟机:JVM高级特性与最佳实践>读后笔记(一)
1 java内存区域1.1 java内存区域1.2 注意事项2.垃圾收集器和内存分配策略2.1判断对象已死算法 2.2引用类型 2.3垃圾收集算法 2.3垃圾收集器话又说回来,默认的垃圾收集器又是什么呢?这个问题既简单又复杂。如果你运行在JVM的客户端模式(Client)下,JVM默认垃圾收集器是串行垃圾收集器(Serial GC,-XX:+USeSerialGC)...原创 2016-09-18 15:41:25 · 72 阅读 · 0 评论 -
使用 Java8 Optional 的正确姿势(转)
我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代码就开始这么写了Optional<User> user = ……if (user.isPresent()) {return user.getOrders();} else {r...原创 2016-09-14 09:38:18 · 993 阅读 · 0 评论 -
JAVA8 十大新特性详解(转)
一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:复制代码 代码如下:interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); ...原创 2016-08-09 16:13:43 · 97 阅读 · 0 评论 -
java对象的强引用,软引用,弱引用和虚引用 (转)
众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直...原创 2016-06-21 16:58:07 · 77 阅读 · 0 评论 -
java 中ClassLoader 的加载顺序
原文引自:http://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader转载 2017-01-18 15:07:36 · 470 阅读 · 0 评论 -
java.lang.Thread.setDefaultUncaughtExceptionHandler()方法实例
java.lang.Thread.setDefaultUncaughtExceptionHandler() 方法设置处理程序时调用线程突然终止默认由于未捕获到异常,并没有其他的处理程序被定义为该线程。声明以下是java.lang.Thread.setDefaultUncaughtExceptionHandler()方法的声明public static void setDefaultUn转载 2016-11-23 17:05:06 · 2543 阅读 · 0 评论 -
java.util.ServiceLoader使用
今天在看Hadoop源代的时候发现,在FileSystem中用到了Java.util.ServiceLoader这个类来从配置文件中加载子类或者接口的实现类。以前从来没有使用过这个类,进去大概看了一下具体的实现。主要是从META-INF/services这个目录下的配置文件加载给定接口或者基类的实现,ServiceLoader会根据给定的类的full name来在META-INF/servic转载 2016-11-23 17:04:22 · 245 阅读 · 0 评论 -
SimpleDateFormat线程安全问题原因与解决方案
1.原因SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之原创 2016-10-17 13:52:08 · 413 阅读 · 0 评论 -
<深入理解Java虚拟机:JVM高级特性与最佳实践>读后笔记
1.2 注意事项2.垃圾收集器和内存分配策略2.1判断对象已死算法 2.2引用类型 2.3垃圾收集算法 2.3垃圾收集器话又说回来,默认的垃圾收集器又是什么呢?这个问题既简单又复杂。如果你原创 2016-10-17 13:53:06 · 224 阅读 · 0 评论 -
jstat查看jvm的GC情况(转)
jstat转载 2016-10-17 13:54:10 · 371 阅读 · 0 评论 -
JVM 调优参数详解(转)
GC有两种类型:Scavenge GC 和Full GC1、Scavenge GC 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,堆的Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor的两个区中。2、Full GC 对整个堆进行整理,包括Young、Tenured和Perm。Full GC 比Scave转载 2016-10-17 13:54:50 · 459 阅读 · 0 评论