JVM
文章平均质量分 81
诸葛小猿
感谢小伙伴们的关注和支持,我是【 诸 葛 小 猿 】,一个彷徨中奋斗的互联网民工。
展开
-
记一次java.lang.ClassNotFoundException问题排查过程
三方jar包集成到springboot项目中,在本地IDEA启动Springboot后,相关功能都是正常的;但是将Springboot项目打成app.jar后,使用java -jar app.jar方式启动后,运行时爆出java.lang.ClassNotFoundException。原创 2020-03-22 22:14:14 · 40478 阅读 · 0 评论 -
使用spring-boot-maven-plugin插件将本地jar包打入包中
使用spring-boot-maven-plugin插件将本地jar包打入包中原创 2023-02-27 16:54:59 · 1179 阅读 · 0 评论 -
Arthas动态调试
官网https://arthas.aliyun.com/doc/advanced-use.html基础命令help——查看命令帮助信息cat——打印文件内容,和linux里的cat命令类似echo–打印参数,和linux里的echo命令类似grep——匹配查找,和linux里的grep命令类似base64——base64编码转换,和linux里的base64命令类似tee——复制标准输入到标准输出和指定的文件,和linux里的tee命令类似pwd——返回当前的工作目录,和linux命令类原创 2022-01-27 17:50:31 · 922 阅读 · 0 评论 -
G1垃圾回收器参数
1.JVM参数配置-Xms64m -Xmx64m -Xss1m -XX:+UseG1GC -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:ParallelGCThreads=8 -XX:+HeapDumpOnOutOfMemoryError -Xloggc:/tmp/wse-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:原创 2021-12-28 17:06:15 · 1317 阅读 · 1 评论 -
Java程序崩溃原因分析:错误日志分析及解决(Cannot allocate memory)
一、背景周末仓内派单程序奔溃,程序启动时间:2021-07-22 10:38:19;程序奔溃时间:2021-07-25 11:12:27。2021-07-25 11:30左右群里有反映收不到拣货派单结果,经查询程序崩溃了。程序于2021-07-25 12:06:49重新启动。启动时添加了JVM的GC垃圾回收监控,-Xloggc:./wse-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M原创 2021-08-02 21:03:29 · 11190 阅读 · 0 评论 -
GC日志文件格式(JVM调优)
先通过一条《深入理解java虚拟机》一书中的一个例子gc日志来回顾一下gc日志的基本知识,下面是一条gc日志:33.125:[GC[DefNew: 3324k->152k(3712k), 0.0025925 secs] 3324k>152k(11904k),0.0031680 secs]从左至右,各个信息的意思为:33.125: 自虚拟机启动以来经过的秒数,单位为秒;GC: 垃圾收集的停顿类型为不需要STW(Stop The World )。如果是Full GC说明发生了STW。如果是原创 2021-07-09 18:18:40 · 1822 阅读 · 0 评论 -
JVM系列-调优实战案例:频繁FullGC和OOM案例
JVM调优是面试中常问的问题,同时也是实际工作中可能遇到的难题,本文简单介绍JVM调优在实战中的应用。一、JVM调优的目标在程序上线前,需要根据需求预估用户数和并发量,并按照这个目标对JVM进行规划和预调优;同时程序运行时间久了,可能会出现程序卡顿、访问变慢等情况;严重时会出现OOM导致程序崩溃。这些情况都需要进行JVM的调优。调优的目标通常有两个:提高吞吐量(吞吐量=用户线程工作时间/(用户线程工作时间+GC垃圾回收时间))减少Stop-The-World的时间二、调优相关的参数JVM调原创 2021-03-06 22:41:03 · 3384 阅读 · 2 评论 -
JVM系列-java内存模型(JMM)
Java内存模型**(Java Memory Model ,JMM)**与JVM运行时数据区是不一样的。这两者是完全不同的概念,绝对不能混为一谈。一、JMM与JVM的区别JVM运行时数据区,是Java虚拟机在运行时对该Java进程占用的内存进行的一种逻辑上的划分,包括方法区、堆内存、虚拟机栈、本地方法栈、程序计数器。这些区块实际都是Java进程在Java虚拟机的运作下通过不同数据结构来对申请到的内存进行不同使用。Java内存模型,是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内原创 2020-11-17 00:15:41 · 260 阅读 · 0 评论 -
java是如何调用native方法?hotspot源码分析必会技能
在学习JDK源码(concurrent并发包、Thread相关源码等)时,一层一层进入方法中,看到最底层通常都会看到一个native修饰的方法。为什么到看JDK源码时,到native方法就没有了?native方法是干啥的?在哪里能看到native方法?java是如何调用native方法的?今天,就通过实际模拟,看看java是如何调用native方法的。为了做这个测试,花了我两个晚上,遇到各种问题。为了解决这些问题,都不知道抽了多少根烟,掉了多少的头发。上正文。一、为什么会有native方法java原创 2020-11-14 00:34:44 · 3437 阅读 · 0 评论 -
JVM系列-第一节:JVM简介、运行时数据区、内存分代模型
一、什么是JVM?JVM是Java Virtual Machine(Java虚拟机))的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM是一种规范,有很多种实现,比如Oracle/Sun JDK、OpenJDK等,用的都是相同的JVM:HotSpot VM;IBM开发的一个高度模块化的JVM:J9。除此之外,还有很多其他的JVM实现。通常大家说起“Java性能如何如何”、“Java有多少种GC”、“JVM如何调优”等问题,默认说原创 2020-10-27 23:03:12 · 237 阅读 · 0 评论