在项目中,开发阶段监控程序可以使用断点完成调试,对于线上的项目,要监控时候:
1.日志分析,
2.JConsole工具
3.Btrace跟踪和监控线程
安装Btrace:在windows环境下,可以直接利用jdk自带的jvisualvm工具来 安装Btrace插件,具体操作如下:
1.进入jdk安装目录,进入bin目录,找到jvisualvm.exe ,打开之后,在工具栏——>工具——>插件 ,搜索插件BTrace Workbench,然后安装
2.启动你程序所在的Tomcat,在jvisualvm.exe 窗口你会发现有个Tomcat的菜单图标,右键——>选择Trace application
3.如果想监控程序执行时间,复制如下代码到Btrace窗体内
package my.app.btrace;
import static com.sun.btrace.BTraceUtils.*;
import com.sun.btrace.annotations.*;
@BTrace
public class TraceProductManageImpl {
@OnMethod(clazz = "/com.odianyun.+business.+/", method = "/.+/", location = @Location(Kind.RETURN))
public static void traceExecute(@ProbeClassName String name,@ProbeMethodName String method,@Duration long time){
long durationTime = time/1000000;
if(durationTime > 0){
String output = strcat(name,".");
output = strcat(output,method);
output = strcat(output,"#");
output = strcat(output,str(probeLine()));
output = strcat(output,">>");
output = strcat(output,str(durationTime));
output = strcat(output,">>ThreadId:");
output = strcat(output,str(threadId(currentThread())));
println(output);
}
}
}
如果想监控程序的参数,运行call tree,换成以下代码即可:
ackage my.app.btrace;
import static com.sun.btrace.BTraceUtils.println;
import static com.sun.btrace.BTraceUtils.size;
import static com.sun.btrace.BTraceUtils.str;
import static com.sun.btrace.BTraceUtils.strcat;
import java.util.List;
import com.sun.btrace.annotations.BTrace;
import com.sun.btrace.annotations.Kind;
import com.sun.btrace.annotations.Location;
import com.sun.btrace.annotations.OnMethod;
import com.sun.btrace.annotations.ProbeClassName;
import com.sun.btrace.annotations.ProbeMethodName;
import com.sun.btrace.annotations.Return;
import com.sun.btrace.annotations.Self;
@BTrace
/**
* 获取程序参数
* @author Michael
*/
public class TraceProductManageParam {
@OnMethod(clazz = "com.odianyun.frontier.guide.business.read.manage.impl.PromotionManageImpl", method = "getMerchantProductCurrentPromotionPriceBatch", location = @Location(Kind.RETURN))
public static void traceExecute(@ProbeClassName String name,@ProbeMethodName String method,@Self Object self, List<Long> mpIds, Long companyId, @Return List<?> ret){
String output = strcat(name,".");
output = strcat(output,method);
output = strcat(output,">inputItems:");
output = strcat(output, str(mpIds));
output = strcat(output,">outputSize:");
output = strcat(output, str(size(ret)));
println(output);
}
}
相关推荐
总之,Java提供了多种方法来监控和管理线程的超时,包括使用`Future`、`ExecutorService`和`Thread.join`。正确地使用这些工具可以提高程序的健壮性,防止因长时间运行任务而导致的性能问题。在实际开发中,应根据...
【描述】:Btrace 是一款强大的Java应用程序运行时分析工具,它允许开发者在不重启应用的情况下,实时地对正在运行的Java程序进行诊断和性能监控。通过深入剖析JVM(Java虚拟机)的工作机制,Btrace 提供了一种安全...
【标题】"voicecall-java-demo(x-wsse).rar"是一个基于Java实现的华为云语音通话示例项目,其中包含了使用WS-Security(X-WSS4J)安全协议的代码示例。这个压缩包是为了帮助开发者理解和集成华为云的语音服务。 ...
在Java编程领域,数据库应用程序开发是一项至关重要的技能。本指南将深入探讨如何使用Java与数据库进行交互,特别是针对Oracle数据库的编程。以下是基于标题、描述和标签所涉及的知识点的详细说明: 1. **Java...
Generate a function or script file call tree and plot it in a figure
"Java程序模型检查方法与实现框架" 本文讨论了Java程序模型检查方法与实现框架,介绍了基于流分析的模型检查技术和实现框架。模型检查是软件可靠性研究领域的一个研究热点,可以补充测试技术之不足。本文首先介绍了...
Java多线程程序设计是Java开发中的重要领域,它允许应用程序同时执行多个任务,从而提高系统资源的利用率和程序的响应速度。在Java中,多线程主要通过两种方式实现:继承Thread类和实现Runnable接口。 一、创建线程...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
### START和CALL命令在调用外部程序时的区别 #### 前言 在批处理脚本编程中,经常需要调用外部程序或者另一个批处理文件。`START` 和 `CALL` 是两种常用的命令,用于实现这一功能。本文将通过具体的示例深入探讨这...
5. **在Java中加载和调用**:在Java程序中,使用`System.loadLibrary()`加载之前编译好的库文件,然后就可以像调用普通Java方法一样调用C++实现的native方法。 在实际应用中,我们需要注意几个关键点: - **数据...
Java程序调用存储过程是数据库操作中的常见任务,特别是在处理大量数据或需要高效执行复杂业务逻辑时。存储过程是预编译的SQL语句集合,它们可以提高性能、减少网络流量,并提供更好的安全性。在Java应用程序中调用...
在Java中,`java.lang.Runtime`类提供了与当前运行时系统交互的方法,其中包括`exec()`方法,该方法允许我们启动一个新的进程并控制其输入和输出流。这对于需要与操作系统交互的任务非常有用。 #### 二、Runtime类...
9. **Java程序运行** - 选项:(A) 能被java.exe成功运行的Java class文件必须有main()方法 (B) J2SDK就是Java API (C) Appletviewer.exe可利用jar选项运行.jar文件 (D) 能被Appletviewer成功运行的Java class文件...
- JRE是Java应用程序运行时环境的基础部分,包含了Java虚拟机(JVM)、类库以及运行Java程序所需的其他支持组件。 - `Runtime.getRuntime()`方法可以获得当前Java应用程序的`Runtime`实例,从而执行操作系统级别的...
java代码-使用java解决webservice接口call调用方式的源代码 ——学习参考资料:仅用于个人学习使用!
"powerbuilder_call_java"的主题聚焦于如何在PowerBuilder应用中调用Java代码,实现两种技术的混合编程,以利用各自的优势。这种集成方式可以提升应用程序的功能性和可扩展性。 PowerBuilder调用Java主要依赖于Java...
《深入解析JVM字节码调用图生成器——基于jvm-callgraph开源项目》 在Java虚拟机(JVM)的世界里,理解和优化代码...通过深入学习和使用这款工具,我们可以更好地驾驭Java程序的运行时行为,提升开发效率和软件质量。
如果没有定义`main`方法,那么Java程序将无法独立运行。 #### 三、方法调用的方式 方法调用有两种主要方式:在一个类内部的方法调用与不同类之间的方法调用。目前我们先聚焦于一个类内部的方法调用。 ##### 1. 类...
- 运行Java程序,调用`callCMethod`,实现Java和C的交互。 4. **注意事项**: - JNI调用可能会有性能开销,因为需要在Java和本地代码之间进行上下文切换。 - 本地方法的错误处理要特别小心,因为它们可能导致...
总之,Java调用Shell脚本是一个有效的方法来在Java程序中实现复杂的Linux环境下的操作,这种技术尤其适用于需要进行系统级操作和自动化任务的场景。掌握这一技术可以帮助开发者更好地实现跨平台的功能,尤其是在开发...