- 浏览: 370457 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
xujishen:
新入职 写道还是没很明白~~这个BigDecimal.ROUN ...
BigDecimal带精度的运算 -
542348257:
数字为long型的时候 好像处理有点问题
【无聊的笔记】将数字转换为中文读法 -
陈小妞:
当你输入100003980的时候在万位会多一个万字
【无聊的笔记】将数字转换为中文读法 -
stranger520:
可能有问题吧,举个例子: pacage1/User.class ...
java读取指定package下的所有class -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java学习——mina篇
打开 %java_home%\bin 下面,看一堆的命令
windows下是一堆exe文件。
挑几个主要的来学习记录下,蛮有用的,居家旅行,调错装x,必备!~
java :忽略
javac :忽略 , 唯一需要知道 javac -g ,
并且通过实地证明,eclipse,mvn编译都是默认加了-g进行编译的。(感谢R_Fx指导,名字太长记不住。。。)
javah :忽略。jni才用得到!~
javaw:原来是启动图形界面用到的!~
jvisualvm.exe 这个点了就知道了。很给力~~~
javap :
详细讲,这玩意是分析运行前代码和了解jvm,class机制的好家伙!
jconsole : 会用就无视了
下面4个是解决很多oom或者监视运行中的JVM的必备武器。
jhat
jps
这个很简单,用一下就知道,通过这个查看java的进程id。
14950 Jps
31664 Main
jmap
1:jmap -heap [pid]
Attaching to process ID 31664, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 10.0-b23
using thread-local object allocation.
Parallel GC with 2 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 1610612736 (1536.0MB)
NewSize = 335544320 (320.0MB)
MaxNewSize = 335544320 (320.0MB)
OldSize = 4194304 (4.0MB)
NewRatio = 8
SurvivorRatio = 8
PermSize = 100663296 (96.0MB)
MaxPermSize = 268435456 (256.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 187367424 (178.6875MB)
used = 149624088 (142.6926498413086MB)
free = 37743336 (35.994850158691406MB)
79.85597752574108% used
From Space:
capacity = 72679424 (69.3125MB)
used = 2218824 (2.1160354614257812MB)
free = 70460600 (67.19646453857422MB)
3.0528915584141116% used
To Space:
capacity = 69664768 (66.4375MB)
used = 0 (0.0MB)
free = 69664768 (66.4375MB)
0.0% used
PS Old Generation
capacity = 1275068416 (1216.0MB)
used = 496040208 (473.06080627441406MB)
free = 779028208 (742.9391937255859MB)
38.903026831777474% used
PS Perm Generation
capacity = 100663296 (96.0MB)
used = 95414112 (90.99398803710938MB)
free = 5249184 (5.006011962890625MB)
94.78540420532227% used
好吧,我发现我见识浅了,看到这儿我欣喜若狂。如此清楚。
2:jmap -histo [pid] 或者 jmap -histo [pid] > heapDump.log
用用有惊喜。
写道
[admin@xxxx~]$ jmap -histo 31664 > heapDump.log
[admin@xxxx~]$
[admin@xxxx~]$ vi heapDump.log
写道
num #instances #bytes class name
----------------------------------------------
1: 1417850 97522464 [C
2: 703592 61916096 com.taobao.forest.domain.dataobject.std.impl.DefaultStdCategoryPropertyValueDO
3: 790666 56248464 [Ljava.lang.Object;
4: 91101 46575560 [I
5: 1467357 35216568 java.lang.String
6: 408526 32682080 com.taobao.forest.domain.dataobject.proprepo.impl.DefaultPropertyValueDO
7: 49821 29456896 [B
8: 195943 24656024 <constMethodKlass>
9: 537905 17212960 java.io.ObjectStreamClass$WeakClassKey
10: 127367 15981640 [Ljava.util.HashMap$Entry;
11: 653443 15682632 java.util.HashMap$Entry
12: 195943 15682208 <methodKlass>
13: 317288 15229824 com.taobao.forest.domain.dataobject.proprepo.impl.DefaultValueDO
14: 412358 13195456 java.util.LinkedHashMap$Entry
15: 259224 12435280 <symbolKlass>
16: 177 11546520 [Ljava.io.ObjectInputStream$HandleTable$HandleList;
内存dump,
友情提示:内存dump就dump一次一般没太多参考意义,推荐多dump几次,然后通过分析工具进行分析观察,方为王道;
3:jmap -dump:format=b,file=formatDump [pid]
这个才是王道的分析导出。。。
各个分析工具分析这个比较给力,上面哪个是文本,这个是format后的二进制文件。
而且耗时有一会。。。
写道
[admin@xxxx~]$ jmap -dump:format=b,file=formatDump 31664
Dumping heap to /home/admin/formatDump ...
Heap dump file created
[admin@xxxx~]$
[admin@xxxx~]$
[admin@xxxx~]$ vi heapDump.log
num #instances #bytes class name
----------------------------------------------
1: 1417850 97522464 [C
2: 703592 61916096 com.taobao.forest.domain.dataobject.std.impl.DefaultStdCategoryPropertyValueDO
3: 790666 56248464 [Ljava.lang.Object;
4: 91101 46575560 [I
5: 1467357 35216568 java.lang.String
6: 408526 32682080 com.taobao.forest.domain.dataobject.proprepo.impl.DefaultPropertyValueDO
7: 49821 29456896 [B
8: 195943 24656024 <constMethodKlass>
9: 537905 17212960 java.io.ObjectStreamClass$WeakClassKey
10: 127367 15981640 [Ljava.util.HashMap$Entry;
11: 653443 15682632 java.util.HashMap$Entry
12: 195943 15682208 <methodKlass>
13: 317288 15229824 com.taobao.forest.domain.dataobject.proprepo.impl.DefaultValueDO
14: 412358 13195456 java.util.LinkedHashMap$Entry
15: 259224 12435280 <symbolKlass>
16: 177 11546520 [Ljava.io.ObjectInputStream$HandleTable$HandleList;
[admin@xxxx~]$ jmap -dump:format=b,file=formatDump 31664
Dumping heap to /home/admin/formatDump ...
Heap dump file created
[admin@xxxx~]$
jstack
用法:jstack [pid]
正如其名,visualVm里面的线程dump用的也就是这玩意了。
可以dump当前的所有线程堆栈。
"Signal Dispatcher" daemon prio=10 tid=0x08117c00 nid=0x7bb7 runnable [0x00000000..0x44070b80]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=10 tid=0x080f6800 nid=0x7bb6 in Object.wait() [0x440cf000..0x440cff20]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x54c79120> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x080f5800 nid=0x7bb5 in Object.wait() [0x44120000..0x44120fa0]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x54c1a290> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x080f2400 nid=0x7bb4 runnable
"GC task thread#0 (ParallelGC)" prio=10 tid=0x08072800 nid=0x7bb2 runnable
"GC task thread#1 (ParallelGC)" prio=10 tid=0x08073800 nid=0x7bb3 runnable
"VM Periodic Task Thread" prio=10 tid=0x0824c800 nid=0x7bc0 waiting on condition
JNI global references: 19493
jhat
用法:jhat -J-mx1024m heap_file_name
前面dump出来的二进制文件,现在用。
放在我这里用就是:jhat -J-mx1024m formatDump
。。。这玩意太慢了。。随便dump一个都500来M,真是恐怖~~~
Dump file created Wed Dec 29 19:20:40 CST 2010
Snapshot read, resolving...
Resolving 9500142 objects...
#
# An unexpected error has been detected by Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 131072000 bytes for GrET in C:\BUILD_ARE
A\jdk6_13\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space?
#
# Internal Error (allocation.inline.hpp:42), pid=5492, tid=8632
# Error: GrET in C:\BUILD_AREA\jdk6_13\hotspot\src\share\vm\utilities\growableA
rray.cpp
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# An error report file with more information is saved as:
# C:\Users\guoliang\Downloads\hs_err_pid5492.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
这个太尴尬了。。。Out of swap space?。。。。
jstatd
jstat(sun.tools.jstat)
jstat实用程序可以用于收集各种各样不同的统计数据。jstat统计数据被分类到“选项”中,这些选项在命令行中被指定作为第一参数。对于JDK 1.6来说,您可以通过采用命令-options运行jstat查看可用的选项清单。清单1中显示了部分选项:
清单1.jstat选项
1.
2.
3. -class
4. -compiler
5. -gc
6. -gccapacity
7. -gccause
8. -gcnew
9. -gcnewcapacity
10. -gcold
11. -gcoldcapacity
12. -gcpermcapacity
13. -gcutil
14. -printcompilation
实用程序的JDK记录将告诉您清单1中每个选项返回的内容,但是其中大多数用于收集垃圾的收集器或者其部件的性能信息。-class选项显示了加载及未加载的类(使其成为检测应用程序服务器或代码中ClassLoader泄露的重要实用程序,且-compiler和-printcompilation都显示了有关Hotspot JIT编译程序的信息。
默认情况下,jstat在您核对信息时显示信息。如果您希望每隔一定时间拍摄快照,请在-options指令后以毫秒为单位指定间隔时间。jstat将持续显示监控进程信息的快照。如果您希望jstat在终止前进行特定数量的快照,在间隔时间/时间值后指定该数字。
如果5756是几分钟前开始的运行SwingSet2程序的VMID,那么下列命令将告诉jstat每250毫秒为10个佚代执行一次gc快照转储,然后停止:
15. jstat -gc 5756 250 10
请注意Sun(现在的Oracle)保留了在不进行任何预先通知的情况下更改各种选项的输出甚至是选项本身的权利。这是使用不受支持实用程序的缺点。请参看Javadocs了解jstat输出中每一列的全部细节。
评论
另外,启动图形界面的Java程序用的javaw.exe、启动Java WebStart用的javaws.exe之类的也别漏掉撒
我勒个去。。不是草稿吗。。怎么发布了。
jvisualvm 我刚在看的时候 刚好看到了,玩耍了一下午感觉很爽。
哈哈~~~
哈哈哈哈你也遇到草稿泄漏门了 XDD
另外,启动图形界面的Java程序用的javaw.exe、启动Java WebStart用的javaws.exe之类的也别漏掉撒
javaw呢
诶呀,javaw我貌似没接触过,看看是干啥的~~~~
3q~~~
另外,启动图形界面的Java程序用的javaw.exe、启动Java WebStart用的javaws.exe之类的也别漏掉撒
我勒个去。。不是草稿吗。。怎么发布了。
jvisualvm 我刚在看的时候 刚好看到了,玩耍了一下午感觉很爽。
哈哈~~~
另外,启动图形界面的Java程序用的javaw.exe、启动Java WebStart用的javaws.exe之类的也别漏掉撒
javaw呢
另外,启动图形界面的Java程序用的javaw.exe、启动Java WebStart用的javaws.exe之类的也别漏掉撒
发表评论
-
2013年技术愿望目标
2013-01-07 23:25 0一: 读源码 1:jetty 2:webx,spr ... -
jetty的http协议解析
2012-07-31 23:59 0上篇文章讲到:jetty的connection解析到hand ... -
jetty源码阅读之connection解析到handler调用
2012-07-29 21:58 0前言: 想要处理用户发出的http请求,首先得获得连接 ... -
jetty源码阅读之connector
2012-07-29 14:56 0AbstractConnector @Overr ... -
定时执行Timer的源码阅读
2012-02-22 18:51 1725Timer的实现原理: 1:timer简介; ... -
jetty翻译
2011-09-06 23:50 0异步等待 异 ... -
【转】mysql Host is blocked error错误解决方案
2011-08-01 14:40 2961Host is blocked because of ma ... -
java按值传递
2011-06-28 23:13 0来看看代码 packag ... -
【无聊的笔记】将数字转换为中文读法
2011-06-05 15:43 6295将阿拉伯数字的数变成我们常用的中文读法, 比如说: 1 ... -
用mina网络传输使用ObjectSerializationCodecFactory一个小注意点
2011-04-05 18:18 8728背景: 之前的 一篇介绍mina的博客中,提到通过mi ... -
jboss下的war包的context映射配置
2011-02-10 17:19 0一般web容器都可以在 deploy 目录下放多个war包, ... -
maven war plugin 的filter 配置。
2011-02-10 17:14 0具体可以参考,maven的官方配置。 http://m ... -
【why系列】内部类为什么访问外围内需要用final
2011-01-10 13:16 011111111111111 -
【why系列】为什么序列化要实现一个空接口Serializable
2010-12-25 22:16 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 -
【why系列】为什么说java是不可变的对象
2010-12-25 22:15 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 package ... -
java线程总结
2010-12-23 15:25 01:java启动一个线程,会为每一个线程,分配一个 ... -
【监控】通过jmx获得系统的gc,内存情况
2010-11-27 21:52 6259通过jmx访问jvm知道的Mbean的一些信息,可以取得系统运 ... -
自动动手写原生态jmx,MbeanInfo,invoke
2010-11-16 22:07 2057使用jmx的东东主要包括下面几个步骤了: 发布j ... -
用spring连接jmx
2010-11-14 18:20 1824接着上一篇 “原生态连接jmx”的例子。 上一篇中,发 ... -
采用hudson跟踪代码质量:单元测试和findbug报表
2010-10-31 22:17 0hu
相关推荐
采用JSP技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出...这种个性化的网上系统管理特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对网上行知网上书店而言非常有利。
行知探索:2018年年度报告.PDF
在深度学习课堂中渗透行知思想——以阅读课课型教学为例.pdf
2019浙江师范大学行知学院招聘模拟试题及答案解析.docx
这篇文档将详细解析“山西省太原市行知宏实验中学校2020-2021学年高二上学期期末考试数学(理科)试题”的相关知识点,旨在帮助学生理解和复习高中数学的重要概念,同时也为教师提供教学参考。 首先,我们要关注的...
Java虚拟机移植知识点分析: 一、软件移植概述: 软件移植是将软件从一种环境移植到另一种环境,通常涉及到操作系统或硬件平台的变化。在这个过程中,需要处理平台依赖性问题,可能需要修改源代码以适应新环境的...
这篇文档将围绕“山西省太原市行知宏实验中学校2020-2021学年高一上学期期末考试地理试题”这一主题展开,深入解析地理试题的知识点,帮助学生理解和掌握高中地理的基本概念、原理和应用。 首先,我们要明白地理...
行知学校消防演练方案.doc
3. 反函数:第三题中提到了函数的反函数,需要知道如何求一个函数的反函数及其性质。 4. 不等式的解法:第四题提到存在实数x使不等式成立,涉及实数域内的不等式求解。 5. 三角函数的性质:第五题考察了三角函数的...
【Python行知学院考务管理系统】是一个基于编程语言Python开发的教育管理软件,结合了数据库技术,用于高效地管理教学活动。系统包含了多种关键功能,旨在优化管理员和教师的工作流程,提升考务管理效率。 首先,...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这个"JAVA教程全部源代码(一).zip"文件包含了与Java学习相关的多个源代码示例,覆盖了从基础到进阶的不同主题。这些源代码是配合Java视频...
Java Web开发技术是构建互联网应用程序的关键领域,涵盖了服务器端编程、网页交互以及数据库管理等多个方面。这个名为"Java Web开发技术大全.zip"的压缩包显然包含了一整套的学习资源,旨在帮助开发者深入理解和掌握...
这篇内容是关于上海市行知中学2019-2020学年高二年级英语上学期第一次月考的试题及解析。试卷主要包含听力理解部分,分为Section A和Section B两个部分。 在Section A中,考生需要听取十组简短的对话,并在每个对话...
行知小学特色办学实施计划方案.doc
这样的教学策略,不仅可以帮助学生获得不同视角下的历史认识,而且能够提高他们的历史比较能力,使他们在全球化的背景下更好地理解人类历史的发展脉络。 实现这些目标的关键在于教师要改变传统的教学模式。教师应当...
InfoQ:行知数字中国数字化转型案例集锦
行知小学便是其中之一,其特色办学实施方案,将“扬长教育”作为核心理念,致力于挖掘和培养学生的个性化特长,以此实现每个学生的最优发展。 “扬长教育”这一理念的提出,是基于对教育公平和优质教育的深刻理解,...
行知小学特色办学实施计划方案设计说明.doc