JVM
lql_h
这个作者很懒,什么都没留下…
展开
-
JVM参数类型
标准参数-help-version-server-client-showversion-cp-classpathX参数非标准化参数-Xint:解释执行-Xcomp:第一次使用就编译成本地代码-Xmixed:混合模式,JVM自己决定是否编译成本地代码[root@centos6 ~]# java -versionOpenJDK 64-Bit...原创 2019-06-10 14:18:44 · 125 阅读 · 0 评论 -
查看JVM运行时的参数
PrintFlagsFinal=表示默认值:=被用户或者JVM修改后的值./java -XX:+PrintFlagsFinal –version ./java -XX:+PrintFlagsFinal -version > /opt/flags.txt //重定向到一个文件中去bool UseG1GC = false //=表示默认值u...原创 2019-06-10 14:38:05 · 964 阅读 · 0 评论 -
Jstat查看JVM统计信息
命令格式options: -class ,-compliler,-gc,-printcompilation类装载:[root@iZ4jc05catqgal8iwrpyhxZ bin]# ./jstat -class 18692Loaded Bytes Unloaded Bytes Time16934 34342.0 72 106.7 ...原创 2019-06-10 17:06:55 · 533 阅读 · 0 评论 -
演示内存溢出
堆溢出演示程序执行Windows执行C:\>java -Xmx32M -Xms32M -jar outmemery.jarLinux执行堆溢出:java -Xmx32M -Xms32M -jar outmemery.jar非堆溢出演示程序Metaspace主要存class、field、method等执行Linux执行...原创 2019-07-09 14:45:27 · 212 阅读 · 0 评论 -
如何导出映像文件
内存溢出原因:内存泄漏内存分配不足导出方式:内存溢出自动导出执行指令-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=./ //./是指当前路径执行指令java -Xmx32M -Xms32M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar ou...原创 2019-07-09 15:17:11 · 490 阅读 · 0 评论 -
jstack实战死循环与死锁
jstack作用jstack可以打印出所有jvm内部所有线程如果cpu飙高,有可能是发生了死循环之类,需要定位哪个线程出了问题jstack使用./jstack 9204 > /opt/stack.txt9204为线程>后面跟着导出的位置内容:"http-bio-8080-exec-10" #56 daemon prio=5 os_prio=0 tid=...原创 2019-08-20 10:58:23 · 317 阅读 · 0 评论 -
实战死循环导致CPU飙高和死锁
CPU飙高执行死循环的jar[root@storm-nimbus-a opt]# java -jar cpu.jar 2>&1 &[1] 12507[root@storm-nimbus-a opt]# java -jar cpu.jar 2>&1 &[2] 12526[root@storm-nimbus-a opt]# jps...原创 2019-08-21 11:12:51 · 1713 阅读 · 0 评论 -
基于JVisualVM的可视化监控
概述位置C:\Program Files\Java\jdk1.8.0_45\bin\jvisualvm.exe概述监控所有的java进程监视堆dump类似mat功能也可以导入hprof文件,该hprof显示内存的占用情况,该hprof的代码如下public class outmemery { private stati...原创 2019-08-21 16:00:17 · 244 阅读 · 0 评论 -
监控远程tomcat和远程java进程
监控远程tomcat和远程java进程监控远程tomcat编辑远程tomcat的catalina.sh在JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"前添加相关代码JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom...原创 2019-08-22 10:29:22 · 183 阅读 · 0 评论 -
Btrace配置
Btrace简介Btrace在程序运行的情况下动态的修改程序里的字节码,达到监控调试的目的Btrace可以动态地向目标应用程序的字节码注入追踪代码使用的技术:JavaComplierApi、JVMTI、Agent、Instrumentation+ASMBtrace安装(windows)新建环境变量BTRACE_HOME添加path: %BTRACE_HOME%\bin...原创 2019-08-23 10:11:05 · 161 阅读 · 0 评论 -
Btrace拦截构造函数、同名函数
拦截方法普通方法@OnMethod(clazz=””,method=””)构造函数@OnMethod(clazz=””,method=”<init>”)拦截同名函数,用参数区分拦截构造函数执行程序public class User { private int id; private String name; public User...原创 2019-08-23 11:30:14 · 164 阅读 · 0 评论 -
Btrace拦截返回值、异常、行号
拦截时机Kind.ENTRY:入口,默认值Kind.RETURN:返回Kind.THROW:异常Kind.Line:行Kind.RETURN执行程序public class Btrace { public static void main(String[] args) throws InterruptedException { // TOD...原创 2019-08-23 14:42:45 · 266 阅读 · 0 评论 -
Btrace拦截this、入参、返回
this:@Self入参:可以用AnyType,也可以用真实的类型返回:@Return简单类型:直接获取复杂类型:反射,类名+属性名获取对象的值执行程序import com.imooc.monitor_tuning.chapter2.User;public class constructor { public static void main(Stri...原创 2019-08-23 16:38:21 · 249 阅读 · 0 评论 -
Tomcat及java程序远程debug
jdwp协议:JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。Tomcat也支持该协议https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/自带远程设置,无需修改starp.shcatalina....原创 2019-08-26 10:51:37 · 271 阅读 · 0 评论 -
tomcat-manager监控
tomcat版本tomcat版本是8.5JDK配置--增加环境变量vi /etc/profile##export JAVA_HOME=/root/jdk1.8.0_11export ZK_HOME=/usr/local/apps/zookeeperexport PATH=$PATH:$JAVA_HOME/bin:##--让环境变量生效source ...原创 2019-08-27 11:20:07 · 93 阅读 · 0 评论 -
Tomcat之psi-probe监控
tomcat版本tomcat版本是8.5应用程序probe.war(用java开发的一个应用程序)TOMCAT配置##文档位置…webapps/docs/manager-howto.html## conf/toucat-user.xml添加用户 <role rolename="tomcat"/> <role rolename="...原创 2019-08-27 14:23:37 · 306 阅读 · 0 评论 -
Tomcat优化
优化范围内存优化线程优化配置优化线程优化maxConnectionstomcat8.5/webapps/docs/config/http.htmlThe maximum number of connections that the server will accept and process at any given time.Tomcat能接收和处理的最大的连接数...原创 2019-08-28 13:51:26 · 105 阅读 · 0 评论 -
Nginx安装
修改yum源vim /etc/yum.repos.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/6/$basearch/gpgcheck=0enabled=1安装命令yum install nginx安装位置/etc/nginx/Nginx配置...原创 2019-08-29 17:41:07 · 87 阅读 · 0 评论 -
Nginx监控连接信息和请求信息
ngx_http_stub_status监控连接信息检查是否有了模块nginx –V…--with-http_stub_status_module…配置[root@storm-nimbus-a conf.d]#vi /etc/nginx/conf.d/ default.conf##添加该信息location /nginx_status{stub_s...原创 2019-09-02 11:18:08 · 2586 阅读 · 0 评论 -
Nginx-rrd监控
1.安装nginx##修改yum源[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/6/$basearch/gpgcheck=0enabled=1##安装yum install nginx -y##添加状态监控[root@storm-nimbus-a conf.d]#vi /etc...原创 2019-09-03 09:11:26 · 357 阅读 · 0 评论 -
Sting Constant Variable
概述类、方法、变量尽量指定final修饰字符串拼接背后不一定是StringBuilder代码1public class Constant { public static void main(String[] args) { } /** 0: ldc #8...原创 2019-09-21 14:15:09 · 92 阅读 · 0 评论 -
常用代码优化方法
尽量重用对象,不要循环创建对象,比如:for循环字符串拼接容器类初始化的时候指定长度List<String> collection = new ArrayList<String>(5);Map<String,Sting> map = new HashMap<String,String>(32);ArrayList随机速度快,Link...原创 2019-09-21 10:29:10 · 343 阅读 · 0 评论 -
GC调优
调优步骤打印GC日志根据日志得到关键性能指标分析GC原因,调优JVM参数初始设置-XX:+HeapDumpOnOutOfMemoryError //内存溢出时,生产hprof文件-XX:HeapDumpPath=./ //hprof文件的保存位置,./是指当前路径-XX:+PrintGCDetails //打印GC详细信息-XX:+PrintGCTime...原创 2019-09-20 10:15:47 · 264 阅读 · 0 评论 -
可视化工具分析GC日志
GCeasyurlhttps://gceasy.io/堆的情况关键性能指标吞吐量和响应时间GCViewer吞吐量GC原因及相应时间最大最小停顿时间原创 2019-09-18 16:13:24 · 255 阅读 · 0 评论 -
GC日志格式
两款GC工具在线工具:https://gceasy.io/GCViewer评价垃圾回收期重要指标吞吐量响应时间打印日志相关参数##打印GC详细信息-XX:+PrintGCDetails##打印CG发生的时间戳-XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ##日志文件的输出路径-Xloggc:....原创 2019-09-18 14:18:09 · 462 阅读 · 0 评论 -
垃圾收集器-2
Parallel Collector-XX:+UseParallelGC 可以手动开启,如果是server模式,默认开启并行收集器-XX:ParallelGCThreads=<N>开启多少个GC线程默认情况下CPU>8 N=5/8CPU<8 N=CPUParallel Collector ErgonomicsErgonomics:自适应,...原创 2019-09-11 14:15:32 · 245 阅读 · 0 评论 -
垃圾收集器-1
概述串行收集器Serial:Serial、Serial Old,单线程收集器,jvm分配内存时,发现内存不过用,暂停应用程序,启动一个专门的垃圾回收线程来回收垃圾,回收完成后,继续执行应用程序,应用在内存比较小的嵌入式设备中并行收集器Parallel:Parallel Scavenge、parallel Old,吞吐量,吞吐量优先的收集器并发收集器Concurrent:CMS、...原创 2019-09-09 15:20:39 · 111 阅读 · 0 评论 -
垃圾回收算法
思想枚举根节点,做可达性分析该节点是垃圾节点,虽然相互持有引用,但无法枚举到根节点,和根节点没任何关系,所以会作为垃圾节点被回收根节点类加载器Thread虚拟机栈的本地变量表Static成员常量引用本地方法栈的变量标记清除分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有缺点:效率不高。...原创 2019-09-09 10:00:10 · 114 阅读 · 0 评论 -
JVM内存结构
运行时数据区程序计数器PC RegisterJVM支持多线程同时执行,每一个线程都有自己的PC Register,线程正在执行的方法叫做当前方法,如果是java代码,PC Register里面存放的是当前正在执行的指令的地址,如果是C代码,则为空虚拟机栈JVM Stacks线程私有的,它的生命周期与线程相同,虚拟机栈描述的是java方法执行的内存模型:每个方法在执行的同时...原创 2019-09-06 16:42:01 · 91 阅读 · 0 评论 -
Nginx优化
增加工作线程数和并发连接数##cat /etc/nginx/nginx.conf...worker_connections 1024;…# 设置了一个worker进程可以同时打开的链接数,有高并发需求时,按照需求进行设定。链接最大数目= worker_processes * worker_connections,包含了nginx与客户端和nginx与upstream之间的连...原创 2019-09-06 10:59:40 · 76 阅读 · 0 评论 -
JVM总结
生产环境发生了溢出如何处理生产hprof文件,用mat等工具分析是否发生内存泄漏在没发生溢出时可以通过jmap把内存映像打印出来,可以通过多次分析定位问题生产环境应该给服务器分配多少内存合适可以通过jstack可以查看每隔一段时间内存发生的变化,应用稳定后,可以看到每块内存的占用情况,jvisualvm,tomcat-manger等如何对垃圾收集器的性能调优不同垃圾收集器有...原创 2019-09-21 15:39:18 · 199 阅读 · 0 评论