生产环境下的java排错调优

生产环境下的java排错调优

ID:27683109

大小:274.51 KB

页数:24页

时间:2018-12-03

生产环境下的java排错调优_第1页
生产环境下的java排错调优_第2页
生产环境下的java排错调优_第3页
生产环境下的java排错调优_第4页
生产环境下的java排错调优_第5页
资源描述:

《生产环境下的java排错调优》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、生产环境下的Java排错调优@施懿民WEAREHIRING!远程调试远程调试架构Java平台调试器架构第3页组件调试器接口/

2、--------------

3、/

4、VM

5、被调程序-----(

6、--------------

7、<----JVMTI–Java虚拟机工具接口

8、后台

9、

10、--------------

11、/

12、通信渠道--(

13、<------------JDWP–Java调试传输协议

14、/

15、--------------

16、/

17、前台

18、调试器-----(

19、--------------

20、<----JDI–Java调试接口

21、UI

22、

23、--------------

24、远程调试原理通

25、过客户机-服务器架构,可以在本地调试Java程序,也可以通过网络进行远程调试,JPDA规范中的两个术语:连接器和传输。连接器是一个JDI抽象,用来在调试器应用程序和目标VM之间建立连接。传输定义应用程序如何进行访问,以及数据如何在前端和后端之间传输。连接器“映射”到可用的传输类型和连接模式。在Sun的JPDA参考实现中,为Microsoft®Windows®提供了两个传输机制:套接字传输和共享内存传输。可用的连接器:连接套接字连接器连接共享内存连接器监听套接字连接器监听共享内存连接器启动命令行连接器第4页远程调试命令参数-Xdebug:启用调试特性。-Xrunjdw

26、p::在目标VM中加载JDWP实现。它通过传输和JDWP协议与独立的调试器应用程序通信。下面介绍一些特定的子选项。从JavaV5开始,您可以使用-agentlib:jdwp选项,而不是-Xdebug和-Xrunjdwp。但如果连接到V5以前的VM,只能选择-Xdebug和-Xrunjdwp。-Xrunjdwp子选项。transport:这里通常使用套接字传输。但是在Windows平台上也可以使用共享内存传输。Server:如果值为y,目标应用程序监听将要连接的调试器应用程序。否则,它将连接到特定地址上的调试器应用程序。address:这是连

27、接的传输地址。如果服务器为n,将尝试连接到该地址上的调试器应用程序。否则,将在这个端口监听连接。suspend:如果值为y,目标VM将暂停,直到调试器应用程序进行连接。第5页演示–设置远程调试1、被调试程序当作调试服务器。-Xdebug-Xrunjdwp:transport=dt_socket,server=y,address=87652、被调程序当作调试客户端。-Xdebug-Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000第6页断点的实现原理断点(BreakPoint)可以说是调试器的关键技术,需要软件和硬件

28、的协作才能实现。一般断点的实现方式有下面几种:通过特定的指令通知中央处理器(CPU)来中断程序的执行。通过设置特定的寄存器来通知中央处理器中断程序的执行。通过强制处理器触发异常来中断程序执行并将控制权转交给调试器。在Intel兼容的处理器架构上,一般调试器是通过在进程中特定的位置插入INT3指令来实现断点的。调试器提供的单步执行,单步跳过执行以及跳出函数等功能,都是断点的变种。第7页特殊断点除了简单的每次执行到断点位置中断程序执行这一种方式,调试器一般都提供了如下几种断点:条件断点–可以指定触发断点的条件,避免每次重复触发断点降低调试工作效率。监视断点–可以在访问数

29、据的时候,中断程序的执行。函数断点–可以在执行函数前或者退出函数前中断程序的执行。异常断点–当程序发生指定异常的时候,中断程序的执行,第一时间发现问题所在。类型断点–当程序试图加载某个类型的时候,中断程序的执行。第8页演示1、禁用所有的断点。2、设置条件断点。3、监视断点。4、异常断点。5、函数断点。6、在类型加载的时候中断第9页演示–Eclipse其他调试技巧1、在堆栈的任意位置重新执行语句。2、在程序启动时进行调试。3、使用变量窗口的逻辑视图。4、单步过滤调试。5、计算表达式。第10页JAVA多线程调试多线程死锁1、死锁的原因;2、检测死锁的案例演示。第12页并

30、行线程问题1、缓存问题演示。第13页JAVA内存调优概述Java虽然有垃圾回收机制,但是程序编写不慎,还是会发生内存泄露导致OutOfMemoryError的发生。本节课讲解了GC的机制,以及JDK自带的HPROF工具以分析内存问题。第15页JavaGC简介所有Java对象都是分配在Java堆上面的;Java上使用垃圾回收机制回收没有引用到的对象;Java虚拟机有专门的GC线程用来执行垃圾回收;当GC线程从内存删除一个对象时,首先会调用对象的finalize函数,在这个函数里可以执行自定义的释放资源操作;Java程序自身无法强制启动GC,即使使用System.g

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。