java不常用但很有用的问题排查工具(持续完善)
因为用的频率不是很多,老忘掉,每次都要搜下,特记录下备忘。
API查看内存情况,比Runtime更靠谱。
MemoryMXBean mxb = ManagementFactory.getMemoryMXBean();
System.out.println(mxb.getHeapMemoryUsage());
dump堆
jmap -dump:file=abc.hprof 86848
ibm openj9的dump选项可参见openj9-docs-0.17.0/xdump.html,它同时包含堆、栈及其它。
查看进程的启动jvm选项
[root@iZ23nn1p4mjZ ~]# jinfo -flags 16603
Attaching to process ID 16603, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.73-b02
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=262144000 -XX:MaxHeapSize=4181721088 -XX:MaxNewSize=1393557504 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=87031808 -XX:OldSize=175112192 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
查看当前类实例汇总情况
[root@iZbp112kwadw1qt8emked5Z logs]# jmap -histo 21094 | more num #instances #bytes class name
----------------------------------------------
1: 61677 41842184 [B
2: 41937 38583528 [I
3: 300394 22331688 [C
4: 351629 11252128 java.util.HashMap$Node
5: 248197 5956728 java.lang.String
6: 24685 3225536 [Ljava.util.HashMap$Node;
7: 74766 2990640 java.math.BigDecimal
8: 25328 1979288 [Ljava.lang.Object;
9: 40762 1956576 java.nio.HeapByteBuffer
10: 40616 1949568 java.nio.HeapCharBuffer
11: 16747 1473736 java.lang.reflect.Method
12: 28706 1377888 java.util.HashMap
13: 8328 1199232 com.mysql.jdbc.Field
14: 17546 701840 java.math.BigInteger
15: 5746 642584 java.lang.Class
16: 34436 550976 java.lang.Integer
17: 16899 540768 java.lang.ref.WeakReference
18: 2538 534344 [Z
19: 10095 403800 java.util.TreeMap$Entry
20: 2045 359920 com.mysql.jdbc.JDBC42ResultSet
21: 11216 358912 java.util.concurrent.ConcurrentHashMap$Node
命令行运行jar应用
java -cp .;c:\classes\myClass.jar;d:\classes\A.jar;...(列出完整依赖jar) packname.mainclassname
-Xbootclasspath是早期1.2版本jdk的选项,http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4279459
-cp/classpath不支持模糊匹配
-jar 和-cp相互排斥
打印关键jvm关键调试信息
| 参数及其默认值 | 描述 |
| -XX:-CITime | 打印消耗在JIT编译的时间 |
| -XX:ErrorFile=./hs_err_pid<pid>.log | 保存错误日志或者数据到文件中 |
| -XX:+MaxFDLimit | 最大化文件描述符的数量限制 |
| -XX:HeapDumpPath=./java_pid<pid>.hprof | 指定导出堆信息时的路径或文件名 |
| -XX:-HeapDumpOnOutOfMemoryError | 当首次遭遇OOM时导出此时堆中相关信息 |
| -XX:OnOutOfMemoryError="<cmd args>;<cmd args>" | 当首次遭遇OOM时执行自定义命令 |
| -XX:-PrintClassHistogram | 遇到Ctrl-Break后打印类实例的柱状信息, 与jmap -histo功能相同 |
| -XX:-PrintConcurrentLocks | 遇到Ctrl-Break后打印并发锁的相关信息, 与jstack -l功能相同 |
| -XX:-PrintCommandLineFlags | 打印在命令行中出现过的标记 |
| -XX:-PrintCompilation | 当一个方法被编译时打印相关信息 |
| -XX:-PrintGC | 每次GC时打印相关信息 |
| -XX:-PrintGC Details | 每次GC时打印详细信息 |
| -XX:-PrintGCTimeStamps | 打印每次GC的时间戳 |
| -XX:-TraceClassLoading | 跟踪类的加载信息 |
| -XX:-TraceClassLoadingPreorder | 跟踪被引用到的所有类的加载信息 |
| -XX:-TraceClassResolution | 跟踪常量池 |
| -XX:-TraceClassUnloading | 跟踪类的卸载信息 |
| -XX:-TraceLoaderConstraints | 跟踪类加载器约束的相关信息 |
java不常用但很有用的问题排查工具(持续完善)的更多相关文章
- linux不常用但很有用的命令(持续完善)
Linux登录后设置提示信息: /etc/issue 本地端登录前显示信息文件 /etc/issue.net 网络端登录前显示信息文件 /etc/motd 登陆后显示信息文件 可以添加以下几个常用选项 ...
- 继承自NSObject的不常用又很有用的函数(2)
函数调用 Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的.Selector相当于门牌号,而Implement才是真正的住户( ...
- 不常用但很有用的git show 和 git blame
团队使用git 合作时,可能遇见想要查看一段比较难以阅读代码, 此时可能需要联系最新的修改者是哪位,这时候最有用的最快捷的方法就是git blame 啦, 这个指令的output是一个文件的各个区域段 ...
- CSS3中不常用但很有用的属性-1
内容来源于W3Cschool和<图解CSS3核心技术与案例实战> 1.:target选择器 URL 带有后面跟有锚名称 #,指向文档内某个具体的元素.这个被链接的元素就是目标元素(targ ...
- mysql不常用但很有用的语句整理
mysqld_multi多实例停止.启动 mysqld_multi --defaults-file=/etc/my.cnf start 1,2 mysqld_multi --defaults-file ...
- 继承自NSObject的不常用又很有用的函数(1)
初始化阶段 —— load 和 initialize load函数 原型: +(void)load 当类被引用进程序的时候会执行这个函数. 在一个程序开始运行之前(在main函数开始执行之前),在库开 ...
- Java中常用的加密方式(附多个工具类)
一.Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二.分类按加密算法是否需要key被分为两类 ...
- Java程序员必备的6款最佳开发工具
工欲善其事,必先利其器.每一个Java程序员都有其惯用的工具组件.对于Java程序员,各种有用的软件和工具泛滥成灾.初级开发人员要么找不到合适的工具,要么在寻找过程中浪费了大量的时间.下面,我将为大家 ...
- linux非常用但很有用的命令
查找指定目录下包含指定字符串的所有文件 grep -rl 'abc' / top查看命令的完整启动路径 top 按c top以MB为单位显示内存信息 top -M 查看内存top io趋势 pidst ...
随机推荐
- React.createClass 、React.createElement、Component
react里面有几个需要区别开的函数 React.createClass .React.createElement.Component 首选看一下在浏览器的下面写法: <div id=" ...
- 用于模型选择的AIC与BIC
一.AIC(Akaike information Criterion)准则 二.BIC(Bayesian information Criterion)准则 参考文献: [1]AIC与BIC区别
- JavaScript-switch-case-电话系统
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 解决ConfigParser配置option的大小写问题
通常情况下,我们会这样解析配置文件: confiig = ConfigParser.ConfigParser() config.read('xxx.ini') #这个read表示对某个文件用读打开, ...
- 如何删除WINDOWS中服务中不再使用的服务?
右键选择那个不需要的服务,点击属性,看到"服务名",拷贝下来 然后通过管理员的方式进入到控制台,输入 sc delete "你刚才拷贝的服务名" ,就行了,注意 ...
- Unity shader学习之Blinn-Phong光照模型
Blinn-Phong光照模型不用计算反射方向,计算公式如下: h = normalize(v + l); Cspecular = Clight * mspecular * pow(max(0, do ...
- HDU 6300
Problem Description Chiaki has 3n points p1,p2,…,p3n. It is guaranteed that no three points are coll ...
- HDU 6298
Problem Description Given an integer n, Chiaki would like to find three positive integers x, y and z ...
- 学习笔记<4>初步控件布局
一.控件布局基本概念 指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性 二.控件布局两种方法 1.使用布局文件完成控件布局(eclipse可视化拖拽控件实现) 2.在JAVA代码 ...
- Rpgmakermv(25) 游戏数据
随着对RMMV插件了解的深入,我们会发现如果我们想要对游戏数据进行一些扩展,首先要了解游戏数据,游戏数据在官方代码中的rpg_managers.js里,这一节我们将要对这个官方类有一些基础的了解,并且 ...