- 浏览: 369857 次
- 性别:
- 来自: 广东广州
-
文章分类
最新评论
-
javaAlpha:
我现在也是一直出现这样的错误。也是java调用。net的接口A ...
关于java调用.net webserivce出现: 服务器无法处理请求。 --> 未将对象引用设置到对象的实例 -
javalover1:
贴出你的代码供大家学习学习啦
验证码的破解思路! -
liaolliso:
你好,请问你的最后一种方法,怎么从rgb值里 直接将每个部分的 ...
验证码的破解思路! -
tant:
天涯之海 写道从网页的session里下手好些吧
请问怎样从 ...
验证码的破解思路! -
wilddonkey:
lz此言说的到位啊
现实中很多人在这样的公司还没有做到了解这个 ...
转: 如何在管理不规范的公司中生存
经常被客户问到这样的问题,我想知道我的Java应用到底在干什么?通常我会反问一句:你为什么想知道呢?得到的回答是,这个Java应用太耗用CPU的资源了,想知道它都耗在哪儿了!
我的这些客户其实都有一定的经验,他们知道怎样通过操作系统的工具和命令来查看某个应用对CPU的资源消耗。例如在Solaris中的prstat命令,就可以得到下面的输出
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
22227 root 706M 568M cpu19 0 0 17:34:33 82% appservDAS/89
24348 root 570M 439M sleep 59 0 0:00:05 0.7% Xorg/15
9053 root 215M 134M sleep 1 0 5:55:37 0.5% java/10
18879 root 500M 386M sleep 59 0 0:32:01 0.0% Oracle/58
24482 root 3384K 2936K cpu0 49 0 0:00:00 0.0% prstat/1
........
Total: 72 processes, 1483 lwps, load averages: 3.39, 3.40, 3.31
从上面的输出很容易判断哪个应用占用了多少CPU的资源。例如上面的例子JavaEE应用服务器“appservDAS”占用了82%的CPU资源。appservDAS的进程其实就是Java应用。那么要进一步判断这个进程为什么消耗了这么多的CPU呢?这不是件容易的事。我的客户先是获得了Java进程的一个快照,也叫ThreadDump。这很简单,只需要kill -3 22227就可以给这个Java进程一个信号,要求它打印出所有当前的线程调用栈。结果如下:
Full thread dump Java HotSpot(TM) Server VM (1.5.0_09-b03 mixed mode):
"RMI ConnectionExpiration-[10.1.4.206:43996,com.sun.appserv.management.client.AdminRMISSLClientSocketFactory@807653]" daemon prio=10 tid=0x028cb120 nid=0x24f6 waiting on condition [0xc30ff000..0xc30ffbf0]
at java.lang.Thread.sleep(Native Method)
at sun.rmi.transport.tcp.TCPChannel$Reaper.run(TCPChannel.java:446)
at java.lang.Thread.run(Thread.java:595)
"RMI TCP Connection(4205)-10.1.4.206" daemon prio=10 tid=0x0110eb30 nid=0x24f4 runnable [0xc31ff000..0xc31ffaf0]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:723)
- locked <0xf7362488> (a java.lang.Object)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:680)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
- locked <0xf7362498> (a com.sun.net.ssl.internal.ssl.AppInputStream)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
- locked <0xf325e540> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:448)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
"service-j2ee" daemon prio=10 tid=0x01c080d8 nid=0x811 runnable [0x00000000..0xc60ff7e0]
"service-j2ee" daemon prio=10 tid=0x01d78e60 nid=0x812 runnable [0x00000000..0xc541f7e0]
"service-j2ee" daemon prio=10 tid=0x010c98a0 nid=0x813 runnable [0x00000000..0xc53cf7e0]
"service-j2ee" daemon prio=10 tid=0x01d7b110 nid=0x814 runnable [0x00000000..0xc516f7e0]
.......
原谅我不把所有的长长的输出都写在这,总之很长,想想,有89个线程呢!从这里能看出什么来吗?能看出哪个线程花费了多少CPU吗?看不出来,因为快照是个静态的数据,只能知道当前每个线程在做什么,但是哪个线程花的CPU多就不得而知了。
通常要知道你的应用哪些部分花费的CPU资源多,需要profiling的工具(例如NetBeans的Profiler),但是这些工具使用和部署起来还是比较麻烦的,而且不适用于生产系统。下面提供一个简单的方法来快速的判断:
1 使用prstat的时候加上-L的参数,你就能获得每个操作系统的线程所消耗的资源。例如:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
22227 root 706M 568M cpu19 0 0 17:34:33 23% appservDAS/89
22227 root 706M 568M cpu19 0 0 17:34:33 12% appservDAS/54
22227 root 706M 568M cpu19 0 0 17:34:33 10% appservDAS/31
22227 root 706M 568M cpu19 0 0 17:34:33 10% appservDAS/12
24348 root 570M 439M sleep 59 0 0:00:05 0.7% Xorg/15
9053 root 215M 134M sleep 1 0 5:55:37 0.5% java/10
18879 root 500M 386M sleep 59 0 0:32:01 0.0% Oracle/58
24482 root 3384K 2936K cpu0 49 0 0:00:00 0.0% prstat/1
........
Total: 72 processes, 1483 lwps, load averages: 3.39, 3.40, 3.31
这时候你能获得比刚才更详细的信息:哪个线程花费了多少CPU。但是这个线程号如何与Java Thread Dump文件中对应起来呢。很简单,在Java Thread Dump文件中,每个线程都有tid=...nid=...的属性,其中nid就是native thread id,也就是只的是LWPID号,只不过nid中用16进制来表示。例如上面的例子中,从prstat中,获得appservDAS的第89个线程消耗了很大的CPU,89的16进制是0x59,找到下面的线程:
"service-j2ee" daemon prio=10 tid=0x016158e8 nid=0x59 runnable [0xc789e000..0xc789f7e0]
at com.sun.enterprise.web.connector.httpservice.HttpServiceConnector.jniRead(Native Method)
at com.sun.enterprise.web.connector.httpservice.HttpServiceConnector.read(HttpServiceConnector.java:283)
at com.sun.enterprise.web.connector.httpservice.HttpServiceRequestStream.read(HttpServiceRequestStream.java:55)
at org.apache.jsp.mod_005fdms.commons.iWebServer_jsp$iWebSignature.ReadPackage(iWebServer_jsp.java:400)
at org.apache.jsp.mod_005fdms.commons.iWebServer_jsp$iWebSignature.ExecuteRun(iWebServer_jsp.java:459)
at org.apache.jsp.mod_005fdms.commons.iWebServer_jsp._jspService(iWebServer_jsp.java:672)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
....
就可以快速判断这个Java应用的资源消耗大概在什么地方了!
发表评论
-
Visual Editor插件下载、安装问题(Eclipse3.1.1) 及解决办法
2007-12-03 12:11 7052http://download.eclipse.org/too ... -
以前正规表达式的学习笔记
2007-10-16 22:50 1302js 代码 以前正规 ... -
阿里巴巴--文字上下滚动代码
2007-10-12 14:31 2568http://www.soojs.com/t/?p=947&a ... -
Java heap space 解决方法
2007-10-12 14:20 19440因为程序要从数据读取近10W行记录处理,当读到9W的时候就出现 ... -
Struts-Layout
2007-10-07 21:47 1179... -
Java实现HTTP的断点续传
2007-08-20 14:29 1431(一)断点续传的原理 其实断点续传的原理很简单,就是在Ht ... -
Java开发框架调查:6%的JSF欲撼动21%的Struts
2007-08-15 09:17 1468来自:CSDN 马京 共有评论(25)条 发表评论 ... -
使用技巧:Java实现随机验证码功能实例
2007-08-07 21:39 4930现在许多系统的注册、登录或者<nobr>发布信息& ... -
Java老师培训讲稿
2007-08-06 21:17 1322暑期的Java老师培训这月就要在八个城市展开了,我的职责和去年 ... -
用P3P解决第三方cookie存取的问题
2007-06-29 14:48 2557... -
如何创建 Eclipse 自定义向导
2007-06-22 09:02 3483Eclipse 框架和集成开发 ... -
单元测试利器 JUnit 4
2007-06-20 10:43 2194本文主要介绍了如何使用 JUnit 4 提供的各种功能开展有效 ... -
[收藏]利用JExcelApi来动态生成excel文档
2007-06-15 08:47 2239首先,请到http://www.andykhan.com/je ... -
通过JDBC连接Oracle数据库中的十大技巧
2007-06-13 08:52 12121、在客户端软件开发中 ... -
java虚拟机jvm关于内存的设置与调优
2007-03-08 11:10 43077JVM内存的设置的原理 默认的java虚拟机的大小比较小 ... -
java读取配置文件的几种方法
2007-03-01 09:10 2750在现实工作中,我们常常需要保存一些系统配置信息, ... -
System.properties列表
2007-02-01 12:23 1462由于编辑器的原因,还是上传个附件把,大家看附件把! -
JAVA操作EXCEL文件
2007-02-01 12:21 2414使用Windows操作系统的朋友对Excel(电子表格)一定不 ... -
java进阶之字符串替换的思考
2007-01-30 17:51 1876最近在开发的过程中用到了字符串的替换, 本来觉得挺简单的问题, ... -
关于java乱码的问题小结
2007-01-30 14:55 1447在最近做审查系统相关模块时,由于是有程序去调用javac来进行 ...
相关推荐
少儿编程scratch项目源代码文件案例素材-岩浆生存 双人游戏.zip
2024安全行业大模型技术应用态势发展报告-中国通信标准化协会
scratch少儿编程逻辑思维游戏源码-海上遭遇.zip
少儿编程scratch项目源代码文件案例素材-羊羊繁殖V1.zip
通信行业:“数据要素X”三年行动规划,面向应用场景挖掘数据价值
内容概要:文章详细探讨了数据连接性和云集成在增强汽车电子电气架构(EEA)方面的重要作用。首先介绍了从分布式到集中式架构的技术演进,解释了域集中式和中央集中式架构的优势,如远程软件升级(OTA)、软硬件解耦等。其次,阐述了云平台在远程软件更新、数据存储与分析等方面的支持作用。接着,强调了数据连接性在实时通信、低延迟决策、多模态传感器融合以及工业物联网集成中的核心作用。此外,讨论了云集成在个性化服务、AI助手、自动驾驶训练与仿真、预测性维护等方面的应用。最后,分析了市场需求与政策支持对这一领域的影响,并展望了未来的发展趋势,如5G-A/6G、边缘计算与AI大模型的融合。 适用人群:汽车电子工程师、智能网联汽车行业从业者及相关领域的研究者。 使用场景及目标:①理解汽车电子电气架构从分布式到集中式的演进过程及其带来的优势;②掌握数据连接性和云集成在提升车辆智能化水平的具体应用和技术细节;③了解相关政策法规对智能网联汽车发展的支持与规范;④探索未来技术发展趋势及其可能带来的变革。 其他说明:本文不仅提供了技术层面的深入解析,还结合了实际应用案例,如特斯拉、蔚来、中联重科、约翰迪尔等企业的实践成果,有助于读者全面理解数据连接性和云集成在现代汽车工业中的重要地位。同时,文中提及的政策法规也为行业发展指明了方向。
少儿编程scratch项目源代码文件案例素材-消灭病毒大作战.zip
scratch少儿编程逻辑思维游戏源码-靶子射击.zip
scratch少儿编程逻辑思维游戏源码-飞翔圣诞老人.zip
scratch少儿编程逻辑思维游戏源码-尖刺.zip
少儿编程scratch项目源代码文件案例素材-小圆点.zip
scratch少儿编程逻辑思维游戏源码-疾速逃生.zip
scratch少儿编程逻辑思维游戏源码-火柴人地底冒险.zip
scratch少儿编程逻辑思维游戏源码-吉文战争.zip
scratch少儿编程逻辑思维游戏源码-荒野跑酷.zip
基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于java开发的以酒交友的社交APP软件+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用
scratch少儿编程逻辑思维游戏源码-滚动天空3D 创造版.zip
scratch少儿编程逻辑思维游戏源码-孤岛绿洲.zip
内容概要:本文档详细介绍了利用MATLAB编程实现Heilder模型对雷电波激励下空间任意点处的时域和频域波形进行分析的方法。首先定义了一个用于计算雷电通道底部电流的Heilder模型函数,该函数能够模拟不同参数条件下的雷电电流波形。接着,通过设定观测点参数和雷电参数,在时域中计算电场强度,并解释了如何使用离散差分方法代替复杂的积分方程求解。对于频域分析,则采用了快速傅里叶变换(FFT)将时域信号转换为频域表示,同时给出了相应的频域计算公式以及绘图指导。此外,还提供了若干编程技巧和注意事项,如避免数值计算溢出、防止频谱泄漏等。 适用人群:电气工程专业学生、从事电磁兼容研究的技术人员、对雷电现象感兴趣的科研工作者。 使用场景及目标:适用于需要理解和掌握雷电波传播特性的研究人员,帮助他们更好地理解雷电波的空间分布规律,从而应用于防雷保护系统的设计优化等方面。 其他说明:文中提供的所有代码均可以在MATLAB R2020a及以上版本环境中正常运行,且附带详细的注释以便于初学者学习。
vs_community__VS2019 防止以后不好找