- 浏览: 296984 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
Xiaoanemy:
我怎么就是不行Error opening zip file o ...
javarebel不用再反复重启tomcat -
fly_hyp:
lvwenwen 写道相对hessian来说有其他什么优势?应 ...
一个很牛的架构组件(Dubbo) -
lvwenwen:
相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
dj4307665:
想了解下,相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
fly_hyp:
sweat89 写道怎么解决的啊?忘了。怎么说呢?自己写的代码 ...
Spring之恶心错误记录
1 .什么是 JVMPI ? Java Virtual Machine Profiler Interface 。参考
http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html#overview
JVMPI 可以做什么?它可以监控 VM 发生的各种事件。例如当 JVM 创建,关闭, Java 类被加载,创建对象,或 GC 回收,等 37 种事件。既然是接口自然就是有一个头文件, [JAVA_HOME]\include\jvmpi.h 。您可以开发自己的 Profiler 监控 Java VM 的发生的各种事件。
下面是我编写的使用 JVMPI 的例子,输出结果说明了为了运行一个 Java 类, JVM 需要做的各种操作。
#include <jvmpi.h>
//1.>cl -LDd -Zi -I. -IC:\j2sdk1.4.2_10\include -IC
// :\j2sdk1.4.2_10\include\win32 -Tp.\jvmtrace.c -o jvmtrace.dll
//2.>copy jvmtrace.dll C:\j2sdk1.4.2_10\bin\
//3.>java -Xrunjvmtrace org.colimas.jni.test.JniTest
//jvmpi interface 全局指 针
static JVMPI_Interface *jvmpi_interface;
// 时间 通知 处 理函数
void notifyEvent(JVMPI_Event *event) {
switch (event->event_type) {
/ * 非常可怕的输出 ,好奇就试试。
case JVMPI_EVENT_CLASS_LOAD:
fprintf(stderr, "trace> Class Load : %s\n", event->u.class_load.class_name);
break;*/
case JVMPI_EVENT_ARENA_DELETE :
fprintf(stderr, "trace> The heap arena :%d is deleted.\n" , event->u.delete_arena.arena_id);
break ;
case JVMPI_EVENT_ARENA_NEW :
fprintf(stderr, "trace> The heap arena %s:%d is created.\n" ,
event->u.new_arena.arena_name,
event->u.new_arena.arena_id);
break ;
case JVMPI_EVENT_GC_FINISH :
fprintf(stderr, "trace> GC is finished. Used object:%d, space:%d, total object space:%d.\n" ,
event->u.gc_info.used_objects,
event->u.gc_info.used_object_space,
event->u.gc_info.total_object_space);
break ;
case JVMPI_EVENT_GC_START :
fprintf(stderr, "trace>GC is started.\n" );
break ;
case JVMPI_EVENT_HEAP_DUMP :
fprintf(stderr, "trace> The heap dump begin %s,end %s.\n" ,
event->u.heap_dump.begin,
event->u.heap_dump.end);
break ;
case JVMPI_EVENT_JVM_INIT_DONE :
fprintf(stderr, "trace> JVM initialization is done.\n" );
break ;
case JVMPI_EVENT_JVM_SHUT_DOWN :
fprintf(stderr, "trace> JVM is shutting down.\n" );
break ;
case JVMPI_EVENT_THREAD_END :
fprintf(stderr, "trace> A thread ends.\n" );
break ;
case JVMPI_EVENT_THREAD_START :
fprintf(stderr, "trace> The thread %s begins whose group is %s, parent is %s.\n" ,
event->u.thread_start.thread_name ,
event->u.thread_start.group_name,
event->u.thread_start.parent_name);
break ;
}
}
// profiler agent entry point
extern "C" {
JNIEXPORT jint JNICALL JVM_OnLoad(JavaVM *jvm, char *options, void *reserved) {
fprintf(stderr, "trace> initializing ..... \n" );
// get jvmpi interface pointer
if ((jvm->GetEnv(( void **)&jvmpi_interface, JVMPI_VERSION_1)) < 0) {
fprintf(stderr, "trace> error in obtaining jvmpi interface pointer\n" );
return JNI_ERR;
}
// initialize jvmpi interface
jvmpi_interface->NotifyEvent = notifyEvent;
// enabling class load event notification
//jvmpi_interface->EnableEvent(JVMPI_EVENT_CLASS_LOAD, NULL);
jvmpi_interface->EnableEvent(JVMPI_EVENT_ARENA_DELETE,
NULL
);
</sp
发表评论
-
为什么中文编程项目失败率特别高?
2017-06-11 10:58 367不少中文编程语言都是创造者一时热情。觉得发明很伟大,想当然的 ... -
阿里大数据架构
2014-06-26 10:16 721阿里大数据架构 -
JDI Java程序员的高级玩具
2013-12-30 10:03 1392JDI,Java程序员的高级玩 ... -
异构云操作系统需要具备的18总特性和3类支持
2013-12-24 14:07 1047什么是云操作系统? 相对于单机操作系统,网络操作系统。至少 ... -
安全云存储系统技术总结
2013-12-05 16:15 947阅读了一下《计算机研究与发展-安全云存储系统与关键技 ... -
大型团队Java项目日志自由激活的设计
2013-11-25 13:40 806大型团队Java项目日志自由激活的设计 摘要: ... -
可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写
2013-11-05 17:04 792这句话我喜欢。 凡是可以用 JavaScrip ... -
评价挺高的Java Web Profile 开源工具 Jwebap
2013-11-04 09:19 707想法很不错,作者也很努力,评价也不错。不过从历史的角 ... -
playframework 非常不错的web开发框架
2013-09-18 15:34 800playframework 非常不错的web开发 ... -
knockoutjs 非常不错的js mvc 框架
2013-09-18 15:32 632knockoutjs 非常不错的js mvc 框架 ... -
一个企业级的自动化工具gradle
2013-09-02 16:08 769还没有用过,理念不错,我喜欢。值得研究一下。 ... -
activeJDBC现在很流行的一个JDBC应用
2013-09-02 16:05 838activeJDBC现在很流行的一个JDBC应用 ... -
如何解决 emma 在 JDK7 下 java.lang.ClassFormatError 错误
2013-09-02 16:04 721JVM 启动时可以加入 “-XX:-UseSplit ... -
10 个非常重要的 HotSpot JVM 参数
2013-08-17 20:42 7941) 跟 Java 堆大小相关的 JVM 内存参数 下 ... -
A JSP to print all the stacks
2013-06-19 17:29 803A JSP to print all the stacks ... -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
2013-05-13 18:05 8011.错误案例 java] view plaincop ... -
对Emma的使用进行一些总结
2013-01-06 17:47 977对Emma的使用进行一些总结 写道 首先将 ... -
一个很牛的架构组件(Dubbo)
2012-12-27 17:52 2628这是一个在阿里内部广泛使用的,管理SOA组件间互相调用的基本框 ... -
Open Id and Open Auth
2011-05-31 10:00 1400Open Id and Open Auth 1.a ... -
redis 初学指导
2010-06-26 23:08 1299如果你初学或者对redis很有兴趣下面的文字可能会对你有帮助 ...
相关推荐
JVM运行机制深入分析,适用于研究java开发的人员,想深入理解jvm
第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行时数据区-02第3节: 揭秘JVM运行...
JVM 运行机制。
探索JVM底层奥秘ClassLoader源码分析与案例讲解,探索JVM底层奥秘ClassLoader源码分析与案例讲解.
深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化.docx
Java虚拟机运行原理,以及运行状态监控
1.jps:查看当前运行着的java进程(仿linux下的ps),显示进程号 2. jinfo: 查参数jinfo -flagPermSize 2208(进程号) jinfo -flag MaxPermSize 2208(进程号) C:UsersWILL>jinfo Usage: jinfo <option> (to ...
SAP JVM 4.1 64 bits
深入JVM内核—原理、诊断与优化视频教程 深入JVM内核—原理、诊断与优化视频教程
Sun JVM原理与内存管理
jvm线程生命周期以及线程的状态切换,探究sleep和唤醒的原理。
java 查看JVM中所有的线程的活动状况 java 查看JVM中所有的线程的活动状况
搜索引擎创建索引时JVM 运行时内存溢出解决方案
主要介绍了IDEA设置JVM运行参数的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。其他的数据依赖于每一个线程,在线程创建的时候创建,在线程退出的时候销毁。
jvm源码,jvm-native的源码,jvm支行机制,可对jvm的运行过程进行分析 个人网站:https://www.zhangjunbk.com
Java jvm虚拟机.zip
面试准备资料:jvm运行时内存、redis
JProfiler是一个重量级的JVM监控工具,提供对JVM精确监控,其中堆遍历、CPU剖析、线程剖析看成定位当前系统瓶颈的得力工具。可以统计压测过程中JVM的监控数据,定位性能问题。