Java调试那点事[转]】的更多相关文章

转自云栖社区:https://yq.aliyun.com/articles/56?spm=5176.100239.blogcont59193.11.jOh3ZG# 摘要: 该文章来自于阿里巴巴技术协会(ATA)精选文章. Java调试概述 程序猿都调式或者debug过Java代码吧?都体会过被PM,PD,测试,业务同学们围观debug吧?说调试,先看看调试严格定义是什么.引用Wikipedia定义: 调试(De-bug),又称除错,是发现和减少计 该文章来自于阿里巴巴技术协会(ATA)精选文章.…
在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索.绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?今天就让我们来聊聊Java日志性能那些事. 说到Java日志,大家肯定都会说要选择合理的日志级别.合理控制日志内容,但是这仅是万里长征第一步……哪怕一些DEBUG级别的日志在生产环境中不会输出到文件中,也可能带来不小的开销.我们撇开判断和方法调用的开销,在Log4J 2.x的性能文档中有这样一组对比:…
线上load高的问题排查步骤是: 先用top找到耗资源的进程 ps+grep找到对应的java进程/线程 jstack分析哪些线程阻塞了,阻塞在哪里 jstat看看FullGC频率 jmap看看有没有内存泄露 使用jstack查看的例子: C:\Users\Iammeaz>jstack 4696 2016-01-08 10:26:06 Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.3-b02 mixed mode):   "L…
Eclipse 平台的特色在于内置了 Java 调试器,该调试器提供所有标准调试功能,包括进行单步执行.设置断点和值.检查变量和值以及暂挂和恢复线程的能力.Eclipse 平台工作台(Eclipse Platform Workbench)及其工具是基于 Java开发工具(JDT)组件所构建的.Eclipse 还有一个特别的 Debug 视图,允许您在工作台中管理程序的调试和运行.它为调试中的每个目标显示其暂挂线程的堆栈帧.程序中的各个线程以作为树的节点出现,而 Debug 视图则显示运行中的各目…
JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序. JPDA 主要由三个部分组成: 1).Java 虚拟机工具接口(JVMTI)2).Java 调试线协议(JDWP)3).Java 调试接口(JDI) JPDA各个组成块: JPDA 定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了它们三者之间的交互方式,即通信的接口. 这三…
javac.exe是编译.java文件 java.exe是执行编译好的.class文件 javadoc.exe是生成Java说明文档 jdb.exe是Java调试器 javaprof.exe是剖析工具   一.区别 (A)java.exe:              运行java程序 javaw.exe:              跟java命令相对的,运行java命令时,会出现并保持一个console窗口,        程序中的信息可以通过System.out在console内输出,而运行j…
原文出处:http://www.wklken.me/posts/2014/11/23/how-to-debug.html 关于代码调试de那些事 1.你得明白你在做什么, 保持清醒 2.想清楚了再写代码 3.关于脚手架代码 4.写完一段代码第一时间自己review一下 5.review中注意, 代码是抠过来的么? 6.搞明白问题的表现是什么(症状) 7.调试过程中, 需要时刻注意 8.环境/数据一致性 9.先不要动代码, 假设代码是正确的 10.首先要怀疑自己 11.对于莫名其妙的问题, 多试几…
Java 平台调试体系(Java Platform Debugger Architecture,JPDA)定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了它们三者之间的交互方式,或者说定义了它们通信的接口.这三个层次由低到高分别是 Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP)以及 Java 调试接口(JDI).  JVMTI(Java Virtual Machine Tool Interface)即指 Java 虚拟机工具接口,定义了JVM为了支持…
JPDA 概述 所有的程序员都会遇到 bug,对于运行态的错误,我们往往需要一些方法来观察和测试运行态中的环境.在 Java 程序中,最简单的,您是否尝试过使用 System.out.println() 来输出您的 Java 程序的执行中的各种变量状态来发现您的 Java 程序运行时的问题?这种方式方便易用,在一些简单的情况下能够解决您的问题,但是如果当您的程序运行在远程环境上,或者当前环境不允许控制台终端输出(比如,考虑一下虚拟机初始化之时),您无法获取终端输出的时候呢?或者,如果您根本无法本…
大家好,我是程序员小跃,一名在职场已经写了6年程序的老程序员,从一开始的菊厂 Android 开发到现在某游戏公司的Java后端架构,对Java还是相对了解的挺多. 大概是半年前吧,在知乎上有个知友私信给我,问我关于零基础如何学习Java,以及在学习过程中会存在一定的迷茫,如何应对等等. 我想着何不把以前的内容重新整合下分享出来给大家呢,于是就有了今天的这次分享. 在过去的一年多时间里,跃哥通过这份清晰的路线图,已经帮助 20+同学做好定位,快速认清了自己当前的现状,并做好相应的应对措施,甚至有…