• 学习英语第七周至第九周

    学习英语第七周至第九周

    阅读英文原著

    Book Time Total Time Progress
    Harry Potter and the Chamber of Secrets 2014.03.31 12:30-14:30 2h 341/341
    Harry Potter And The Prisoner Of Azkaban 2014.04.02 12:30-13:30 1h 30/435
    Harry Potter And The Prisoner Of Azkaban 2014.04.03 ~ 2014.04.20 1h 435/435
    Read More ...
  • 对C语言中的static关键字的深入理解

    对C语言中的static关键字的深入理解

    在阅读一些项目源代码时,我发现很多时候,会把函数和变量声明为static,所以,很好奇为什么要这样做,于是有了下面这篇文章。

    基本概念

    使用static有三种情况:

    • 函数内部static变量
    • 函数外部static变量
    • static函数

    函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的结束而消失,下一次调用时,static变量的值,还保留着上次调用后的内容。

    Read More ...
  • 使用JVMTI获取Java多线程程序指令执行次序

    使用JVMTI获取Java多线程程序指令执行次序


    在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为。这样细粒度的底层行为用一般方法很难完成,我们需要借助 JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息。本文先介绍编写JVMTI程序的基本框架,然后介绍如何使用JVMTI来获取多线程程序中指令之间的次序。

    JVMTI简介

    JVMTI是用于编写开发与监视工具的编程接口,使用它可以检查并控制运行于Java虚拟机上的程序。使用它可以完成性能分析,调试,监视(monitoring),线程分析,覆盖分析(coverage analysis)等工具。

    使用JVMTI可以编写出一个agent。在运行Java程序时,指定这个agent,那么当虚拟机运行程序时,如果agent中指定的一些事件发生,虚拟机就会调用agent中相应的回调函数。JVMTI提供了一系列可以指定的事件,以及获取虚拟机中信息的函数接口。

    Read More ...