![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
多多小老虎
为学日益,为道日损,损之又损,以至于无为,无为而无不为
展开
-
String intern方法理解
java string intern原创 2023-02-19 22:48:41 · 335 阅读 · 1 评论 -
jvm问题定位中,jstack找出占用cpu最高的堆栈信息
找到系统中的java进程id 1,使用jps -lm,查找对应java进程 2,使用命令top -p <pid> ,显示你的java进程的内存情况,pid是你的java进程号,比如5830 3,按H,获取每个线程的内存情况 4,找到内存和cpu占用最高的线程tid,比如5831 5,转为十六进制得到 0x16c7 ,此为线程id的十六进制表示 6,执行 jstack 5830 |grep -A 10 0x16c7,得到线程堆栈信息中5830进程中5831这个线程所在行的后原创 2021-02-08 18:00:21 · 110 阅读 · 0 评论 -
使用减少ifelse使用
仅当做学习记录 1.提前return 遇到如下需求 if (condition) { // do something } else { return xxx; } 可以这么做 if (!condition) { return xxx; } // do something 2. 使用 Optional 遇到如下需求 if (user == null) { //do action 1 } else { //do action2 } 可以这么做 public class Ma原创 2020-10-20 18:11:38 · 146 阅读 · 0 评论 -
springboot工程分环境打包调试
工作中需要根据不同环境打包不同jar包 在这里仅当做学习记录 大体工程目录结构如下 在对应模块的pom文件配置 <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> &l原创 2020-10-18 15:54:40 · 178 阅读 · 0 评论 -
生产服务内存泄露排查
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、排查过程总结 前言 生产环境,我们使用rancher k8s部署我们的服务,有个服务(具体我这里就不说了),在晚上8点左右,因为这个服务的内存溢出导致了其他服务出现了异常,在8点的时候,客户频繁投诉,后面排查发现是有个服务内存泄露。通过grafana图形观察,可以明显看到其实这个服务在早市11点左右其实已经内存泄露,只是当时客户并没有发现。 一、排查过程 因为生产已经挂了,当时我们进入服务的pod中简单执行如下命令。不要问原创 2020-10-14 18:46:55 · 553 阅读 · 0 评论 -
arthas常用命令
文章目录前言一、arthas简介二、常规使用的命令总结 前言 在生产环境或者开发环境中,我们经常会遇到JVM线程死锁导致CPU飙高或者OOM内存溢出的问题。从而需要进行定位问题。我们可以使用阿里开源的一款在线定位JVM的工具“arthas” 一、arthas简介 这里我不用过多的描述,大家可以直接去arthas的网站进行了解,里面文档写得更加详细 https://github.com/alibaba/arthas 这里我只想说下,jdk自带的命令行工具能够实现的,arthas基本都能实现,并且arthas原创 2020-09-06 14:53:48 · 378 阅读 · 0 评论 -
JVM问题定位
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Java进程CPU使用率居高不下二、OOM问题2.1 开发环境定位OOM2.2生产环境定位OOM总结 前言 在工作中,我们有可能在sit开发环境或者生产环境遇到JVM OOM的问题或者某个JAVA进程的CPU使用率居高不下。这个时候就需要我们通过对JVM的分析找到问题点。一般要么是JVM启动参数设置不到位或者我们的代码中出现了bug(如果是代码中出现bug,这个难度就比较大了)。下面我们就分两个方面描述如何定位到问题,一个原创 2020-09-06 14:28:31 · 837 阅读 · 0 评论 -
JVM预调优
1.前言 在实际生产环境中,我们经常需要在部署我们服务之前对JVM进行预调优,预调优完后,一定一定需要进行压测,根据压测结果进行调整,找到最合适的调优参数。 2.JVM预调优 下面有几个建议: 1.生产上JVM的调优是需要提前规划的,并且一般只有像架构师这种级别的,比较熟悉我们的业务场景,进行预调优才比较有效果。 2.我们设置完JVM预调优参数后,是需要进行压测,根据压测结果进行调整的,不可能一次到位,调优是没有最好,只有更好 3.在预调优阶段,我们是需要对JVM进行监控的,这样你进行压测,我们才能通过监控原创 2020-09-06 11:27:59 · 185 阅读 · 0 评论 -
如何自学JVM参数
1.JVM命令行参数 要学习JVM的命令行参数,要根据自己使用的是哪家的JVM实现然后去对应官网查找,这里我们正常都是使用oracle实现的hotspot虚拟机,当然最标准的是去oracle的官网查找,下面给出的是最标准的官方推荐的 JDK8的文档 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 根据上述文档,我们可以得出以下结论 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSp原创 2020-09-05 15:22:43 · 114 阅读 · 1 评论