
java
lizhibin007
南昌大学程序猿一枚
展开
-
一次堆内存溢出查找分析笔记
代码如下:设置堆大小及堆内存快照:运行如下,出现了堆溢出:打开MemoryAnalyzer Tool,导入hprof文件,结果如下:上图点击Leak Suspects,如下图:再点击Details,显示如下:鼠标右键选 ==>with incoming references(查看被引用的来源) ,显示如下:再回到代码,查看oomList对象,结果在16行,找到了问题所在。当然也可以点击 See stacktrace:结果如下:...原创 2021-07-07 19:00:51 · 152 阅读 · 0 评论 -
CPU过高问题定位笔记
CPU过高定位一般有以上两种方案查询定位:第一种:top+jstack结果如下:由上图可知,进程36032的CPU占用过高接着用如下指令查看进程36032下的各线程信息结果如下:由上图可知,线程36044占用CPU过高首先,我们将线程PID36044转换为16进制 :8ccc然后用: jstack 进程PID > 路径 命令将进程36032信息输出到1.txt文件中然后用cat 读出信息,再加grep过滤输出与线程 8ccc相关的信息,如下图:结果定位为在 函.原创 2021-07-07 16:13:18 · 495 阅读 · 0 评论 -
通过线程堆栈日志定位并解决死锁问题笔记
一个死锁例子:package com.duoxiancheng;public class DeadLock { private static void deadLockExample(){ final Object o1=new Object(); final Object o2=new Object(); Runnable r1=()->{ synchronized(o1){ ...原创 2021-07-05 13:59:27 · 549 阅读 · 0 评论 -
什么是线程堆栈,它又能解决什么问题笔记
例如如下:举个例子:结果如下:原创 2021-07-05 12:11:17 · 551 阅读 · 0 评论 -
学会使用 JDK 工具(3):用于查看 JVM 统计信息的 jstat笔记
jstat基本用法:jstat可以检查 JVM 整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC 次数和耗时.其中 -option 必选参数表示命令参数 如 gc 等, -t 为可选参数表示是否打印时间(秒),-h 可选参数,表示每隔多少行打印头部列表,如设置 -h 5 , 那么每五条记录就会重新打印表头,vmid 必选参数,Java 进程id,interval 可选参数表示采样的时间间隔,count 可选参数表示需要采样多少条.-option 可选如下:jstat -.原创 2021-07-04 15:40:21 · 177 阅读 · 0 评论 -
学会使用 JDK 工具(2):用于查看 JVM 堆内存使用的 jmap笔记
jmap的基本用法:查看堆内存信息: jmap --heap --pid 进程id不过jmap一般用来导出堆内存快照,如下:jmap -dump:live,format=b(二进制形式),file=/tmp/heap.bin(导出路径) 进程id再结合jhat,查看堆内存快照信息: jhat+路径浏览器打开 7000端口,显示堆内存类的信息:...原创 2021-07-04 12:55:49 · 258 阅读 · 0 评论 -
学会使用 JDK 工具(1):用于查看 JVM 配置参数的 jinfo笔记
jinfo 基本用法:一次jinfo使用过程:首先找到程序的进程id查找java版本及开启GC日志打印:设置堆内存快照路径:查看虚拟机参数(使用什么GC等等):原创 2021-07-04 11:28:47 · 169 阅读 · 0 评论 -
需要知道的 GC 算法和常用的垃圾收集器笔记
原创 2021-07-04 10:59:00 · 111 阅读 · 0 评论 -
什么是 JVM 调优,为什么需要做调优笔记
原创 2021-07-04 10:41:22 · 276 阅读 · 0 评论 -
TCP 三次握手与四次挥手笔记
原创 2021-04-14 11:47:50 · 120 阅读 · 0 评论 -
常见的线程池笔记
1.newSingleThreadExcutorimport java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class SingleThreadExectutor { public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThr原创 2021-03-21 10:10:40 · 189 阅读 · 1 评论 -
线程池初认识笔记
使用线程池的好处:**1.**可以复用线程**2.**可以控制资源总量注:统一管理指线程池可以同时管理多个线程,比如3000多个线程,你不可能一个一个管理,使用线程池就可以统一管理,方便快捷。...原创 2021-03-17 18:19:45 · 83 阅读 · 0 评论 -
实现Runnable接口和继承Thread类对比
首先确定实现Runnable接口更好。1.从代码架构考虑,具体执行的任务即run()方法代码的内容,应该与创建线程的类Thread解耦,不应该把两者混为一谈。2.从资源节约的角度上,继承Thread的类,每次想新建一个任务,只能创建一个独立的线程,而创建一个线程的损耗是比较大的,而Runnable可以利用线程池工具,可以大大减少创建,销毁的损耗。3.从扩展的角度看,继续Thread的类,以后不能继承别的类,不利于以后扩展。两种方法本质对比:1.实现Runnable接口,最终调用target.run原创 2021-03-14 10:30:22 · 554 阅读 · 0 评论 -
获取Class实例的四种方法笔记
例如:附:对java.lang.Class类的理解原创 2021-03-09 21:55:01 · 90 阅读 · 0 评论 -
线程池笔记
例如:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class FixedThreadPoolTest { private static ExecutorService executorService = Executors.newFixedThreadPool(1); public static void main(...原创 2021-02-08 09:34:12 · 220 阅读 · 0 评论 -
线程的生命周期笔记
所以上述图,细分为如下图:原创 2021-02-06 12:08:43 · 93 阅读 · 1 评论 -
JVM 类的加载笔记
例子:原创 2021-01-26 10:04:43 · 73 阅读 · 0 评论 -
油管最火KMP算法讲解,阿三哥的源代码!
package com.interview.string;/** * Date 09/22/2014 * @author tusroy * * Do pattern matching using KMP algorithm * * Runtime complexity - O(m + n) where m is length of text and n is length of pattern * Space complexity - O(n) */public class Sub转载 2021-01-06 19:10:17 · 446 阅读 · 0 评论 -
狂神说之什么是Springcloud笔记
原创 2020-12-04 20:51:18 · 413 阅读 · 0 评论 -
狂神说SpringCloud简介笔记
原创 2020-12-04 20:31:12 · 884 阅读 · 0 评论 -
Mybatis Sql语句中#和?的区别及Mybatis动态代理笔记
Sql语句中#和?的区别:Mybatis动态代理:原创 2020-11-18 22:38:50 · 251 阅读 · 0 评论 -
UML类图
1.类图基础属性-表示private#表示protected~表示default,也就是包权限_下划线表示static斜体表示抽象2.类与类之间关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)2.1泛化介绍:泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或转载 2020-11-09 16:45:57 · 193 阅读 · 0 评论 -
@Data注解 与 lombok
@Data 注解的主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法;引入lombok要使用 @Data 注解要先引入lombok,lombok 是什么,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率。在maven中添加依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok转载 2020-11-08 09:24:41 · 276 阅读 · 0 评论 -
java学习路线
转载 2020-11-07 18:13:05 · 68 阅读 · 0 评论 -
java 一个空指针异常及内存图分析实例
例如如下代码:内存图分析:原创 2020-11-07 08:36:40 · 518 阅读 · 0 评论 -
狂神说注解与反射笔记截图
原创 2020-10-22 08:15:43 · 543 阅读 · 0 评论 -
return关键字在异常处理中的坑
import java.util.Scanner;public class Main { public static void main(String[] args) { int result=test(); System.out.println("one+two:"+result); } public static int test() { Scanner input=new Scanner(System.in); System.out.println("==========st原创 2020-10-06 22:53:18 · 204 阅读 · 0 评论 -
Java 中基本类型和字符串之间的转换
在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。其中,基本类型转换为字符串有三种方法:使用包装类的 toString() 方法使用String类的 valueOf() 方法用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串再来看,将字符串转换成基本类型有两种方法:调用包装类的 parseXxx 静态方法调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱PS:其他基本类型与字符串的相互转化这里不再一一列出,方法都类转载 2020-10-02 22:01:32 · 147 阅读 · 0 评论