CN101393535A - 将运行时事件与组件相关联的方法和系统 - Google Patents
将运行时事件与组件相关联的方法和系统 Download PDFInfo
- Publication number
- CN101393535A CN101393535A CNA2007101534523A CN200710153452A CN101393535A CN 101393535 A CN101393535 A CN 101393535A CN A2007101534523 A CNA2007101534523 A CN A2007101534523A CN 200710153452 A CN200710153452 A CN 200710153452A CN 101393535 A CN101393535 A CN 101393535A
- Authority
- CN
- China
- Prior art keywords
- assembly
- responsible
- label
- incident
- tactful
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及将运行时事件与组件相关联的方法和系统。本发明的方法包括:获取运行时事件;获取当前运行环境的上下文并根据所述上下文确定当前组件;获取当前组件的关联策略并根据所述关联策略确定与所述运行时事件相关联的负责组件。本发明的一个目的是将运行时事件与组件相关联。本发明的另一个目的是在有复杂的互依存关系的组件组成的系统中确定哪个组件实际消费了资源。
Description
技术领域
本发明一般涉及计算机领域,特别是将运行时事件与组件相关联的方法和系统。
背景技术
在合作环境中,组件间存在复杂的互依存关系,并且确定资源的真实消费者非常令人迷惑。在合作过程期间,一个组件通常代表另一个组件消费资源。图1示出了这种情形。
图1示出了现有技术中一个富客户端平台(RCP,Rich ClientPlatform),它是Lotus客户端的核心。RCP基于OSGI规范,OSGI规范具有在不同组件间频繁发生合作的特征。在此情况中,应该随着不同组件的角色和运行时上下文做出不同的记账决定。图1示出了HTTP请求的典型过程流。当“HTTP组件”接受一个业务请求时,它将过程完全分配给“服务小程序组件1-n”,它们将调用用于功能过程的“工具组件”。当“HTTP组件”接受来自于管理员的请求以配置相关系统时,它将调用“配置处理器组件”用于功能过程。根据不同的相关配置的分类,它将调用“XML处理器组件”或者“DB处理器组件”。显然,“工具组件”代表服务小程序消费资源。但是服务小程序负责它自己的资源消费。为了分析此环境中的资源消费,原来的方法是不能胜任的。
因此,需要在此环境中发现资源的真实消费者,这对于在合作环境中做出资源使用情况的清晰分析、做出有效的性能诊断和认识到主要消费点非常重要。为了了解软件组件的资源使用,并且这将对于完善组件设计、运行时过程或者安全做出变化需要有所帮助,已经有了一些涉及资源记账的努力。但是它们都具有缺点,这些缺点使它们不适合解决上述问题。当前的方法没有考虑合作组件间资源的真实消费者。这些方法仅关注单个组件的资源消费。在合作环境中,在没有考虑组件间关系以及没有反映组件和运行时环境的情况下,不可能做出明智的记账决定。这样,很难基于当前方法直接解决上述问题。
首先,当前对用于资源记账的两个主要单元是线程和隔离(一种封装的Java程序或者不与其他的组件共享状态的应用组件)。很难将不同种类的组件映射到这两个单元。大部分组件模型独立于线程并且在不同组件间具有互依存关系。因此,缺乏对于通常组件单元的支持使当前方法难于作为基础使用。
其次,这些方法依靠机械的代码手段。它们提供接口和相关实现的定义并将它们插入代码,这很难随不同环境做出改变。因此,在此环境下,需要发现新的方法以解决资源的真实消费者问题并且做出有效的记账。
发明内容
本发明的一个目的是将运行时事件与组件相关联。这样,当一些重要的事件发生时,能够捕捉到精确的上下文,例如,谁在什么条件下删除了一个文件或哪个组件应当为系统崩溃负责。此外,通过将运行时事件与组件相关联,还能够识别那个组件违反了系统原则以及发现系统中易受攻击的点。
本发明的另一个目的是在有复杂的互依存关系的组件组成的系统中确定哪个组件实际消费了资源。
根据本发明的一个方面,提供一种将运行时事件与组件相关联的方法,包括:获取运行时事件;获取当前运行环境的上下文并根据所述上下文确定当前组件;获取当前组件的关联策略并根据所述关联策略确定与所述运行时事件相关联的负责组件。
根据本发明的另一个方面,提供一种将运行时事件与组件相关联的系统,包括:事件监视器,用于获取运行时事件;上下文监视器,用于获取当前运行环境的上下文并根据所述上下文确定当前组件;推理引擎,用于获取当前组件的关联策略和根据所述关联策略确定与所述运行时事件相关联的负责组件。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,
图1示出在合作环境中组件间存在复杂的互依存关系的示意图;
图2示出按照本发明的一个实施例的为各个组件附加策略标签的示意图;
图3示出按照本发明的一个实施例的将运行时事件与组件相关联的方法的流程图;
图4示出按照本发明的一个实施例的将运行时事件与组件相关联的系统的方框图;
图5示出按照本发明的另一个实施例的将运行时事件与组件相关联的系统的方框图;
图6示出适于实施本发明的计算机系统的结构方框图。
具体实施方式
图2示出按照本发明的一个实施例的为各个组件附加策略标签的示意图。图2中的富客户端平台中的组件与图1中的组件有相同的互依存关系。本发明中,为各个组件附加了一个表示运行时事件与该组件之间的关联策略的标签,即策略标签。以下将会结合实施例对此进行详细说明。
图3示出按照本发明的一个实施例的将运行时事件与组件相关联的方法的流程图。
在步骤301,将策略标签与各个组件相关联。这个步骤可以是在设计阶段通过多种方式实现。
在Jave程序中可以通过Java注释来实现策略标签与组件的关联。注释是J2SE 5.0(Tiger)中的一个新功能,它为核心Java语言带来必要的元数据工具。注释是对代码的修改并应用于包声明、类型声明、构造器、方法、字段、参数和变量。这样可以利用在代码中插入注释来为以后的记账处理提供重要的参考。
另一个将策略标签与各个组件相关联的方式是采用策略存储装置。例如,在独立的配置文件中存储一个或多个组件的组件名称以及它所对应的关联策略标签等等。另外,还可以为各个组件针对调试、系统安全或系统测试等多个不同的目的准备多组关联策略标签。在运行时针对不同目的选择其中的一组。
再一个将策略标签与各个组件相关联的方式是为每个组件提供专门的API。当需要获取组件的策略标签时,可以调用该API。
接下来将详细描述在执行阶段将运行时事件与组件相关联的过程。
在步骤302,获取运行时事件。至少可以通过主动采样或由事件被动触发而获取事件。例如可以通过主动采样来获取一个时间间隔内消耗的CPU时间。对于打开文件句柄、套接字或分配存储器这样的事件可以被动地触发来获取运行时事件。
在步骤303,获取当前运行环境的上下文并根据所述上下文确定当前组件。其中,获取当前运行环境的上下文可以是通过堆栈巡视器获取堆栈快照并基于顶堆栈帧来确定当前组件。或者,可以通过查看执行日志来确定当前组件。执行日志是在程序执行过程中记录组件调用过程的。当执行过程进入新的组件时,该组件的信息(包括组件的策略标签)和它们的策略被记录进日志;当执行过程退出某一组件时,该信息也被记录进日志。通过这样的方式,执行日志真实的体现了当前运行时环境。这样,可以通过查看执行日志来查找当前组件。堆栈的快照和执行日志都可以反映当前运行环境,都可以用于查找当前组件及其相关策略标签。本发明只是示例性地给出了获取当前运行环境的上下文的几种方式,事实上,本领域技术人员可以采用目前获取当前运行环境的上下文的各种方式来实现本发明。
在步骤304,判断当前组件或关联策略是否改变。如果未改变,说明在事件发生时,运行堆栈中的当前组件和相关策略没有改变。那么可以判断为该事件负责的组件和上一事件相同,即可直接利用上次事件发生时的分析结果得出负责组件。这样,直接执行步骤306,以更新负责组件的统计。应当理解,步骤304是一个可选的步骤,目的是节省其他判断负责组件的步骤以提高效率。
如果步骤304的判断结果是否,则进行步骤305,获取当前组件的关联策略并根据所述关联策略确定与所述运行时事件相关联的负责组件。
在策略标签附加到组件的情况下,策略标签是与组件一起装载到执行堆栈中的。这样,在堆栈快照中既有组件又有组件的策略标签。当前组件所附加的策略标签可以从所述快照中获取。相似地,当程序执行进入一个组件时,取出它包含的标签并把标签和组件信息写进日志。这样,同样可以从日志中取得当前组件所附加的策略标签。
在策略标签存储在策略存储装置中的情况下,则可以读取策略存储装置中的所述策略标签。例如,通过当前组件名检索策略存储装置中的该组件所对应的策略标签或打开当前组件所对应的配置文件以读取该组件的策略标签。
此外,还可以调用专用的API来获得当前组件的策略标签。
策略标签可以是以下标签中的一个或多个:Parent,Self,Caller,Classloader,Common,Allocater,Boundary,Leakbot和HeapAnalyzer。应当理解,根据不同目的可以设计其他策略标签。
根据关联策略确定与所述运行时事件相关联的负责组件可以按如下方式实现:
当策略标签为Self时,则确定当前组件为负责组件;
当策略标签为Parent时,则确定创建该线程的父组件为负责组件;
当策略标签为Caller时,则确定调用当前组件的组件为负责组件;
当策略标签为Classloader时,则确定装载当前组件的系统组件为负责组件;
当策略标签为Common时,则确定提供公共服务的组件为负责组件;
当策略标签为Allocater时,则确定与资源相关联的分配器为负责组件;
当策略标签为Boundary时,则确定位于执行堆栈中最上面的组件为负责组件。在采用执行日志的方式下,因为堆栈最上层的组件在执行过程中已经被记录到日志中,并且作为最后被写入的内容可以从日志中识别出来。
根据关联策略的设计,例如需要判断父组件或当前组件的调用者时,需要保存所述执行堆栈的轨迹。根据所述执行堆栈的轨迹的递归,查找父组件或当前组件的调用者等。
在步骤306,更新负责组件的统计。在得到运行时事件和它的负责组件后,可以将它们记录到日志中或统计池中,用于以后的系统分析。应当理解,步骤306是可选的步骤。例如,在调试过程中得到运行时事件与负责组件的关联后,显示该关联关系也是可以的。
在日志或统计池中记录运行时事件与负责组件的关联后,可以反映运行时的上下文。这样,可以记录谁在什么条件下删除了一个文件或哪个组件应当为系统崩溃负责。此外,通过将运行时事件与组件相关联,还能够识别那个组件违反了系统原则以及发现系统中易受攻击的点。
在日志或统计池中记录运行时事件与负责组件的关联后,可以确定在有复杂的互依存关系的组件组成的系统中哪个组件实际消费了资源。使得记账处理更加准确。
将运行时事件与组件相关联是有优势的。首先,由组件组成的系统时相互独立开发和交付的。每个组件是自治的,也就是每个组件自己管理它的资源,包括执行它的功能所使用的堆空间。每个组件负责分配它需要的堆空间并在不使用时释放它。这使得组件成为堆管理的一个单元。这样,本发明在管理由第三方组件构成的系统时非常有用。例如,给所有第三方组件附加策略标签,可以识别对系统的堆错误负责的组件。这样可以替换错误的组件或要求该组件的供应商修改该错误。
利用本发明的方法还可以帮助查找热点。当前的热点跟踪是方法级的。由于方法的数量通常是非常大的,基于方法的热点跟踪的系统开销非常大,并且容易失去主要的关注点。本发明中的组件是任意粒度的,,可以是一个方法,也可以是一个类,或者一个包,甚至几个包的组合。这样,采用本发明可以实现基于组件的热点跟踪,而实现基于组件的热点跟踪也更为容易。
现有的热点追踪主要依赖当前线程的运行堆栈,当创建新线程时新的堆栈被使用,导致新线程丢失了父线程的信息。这样原始执行上下文的丢失会带来决策上的混淆甚至错误。本发明中在组件中附加Parent标签,可以找到父线程,这样就解决了该问题,使得统计热点时更加准确。
在现有的热点跟踪中,静态资源的初始化通常被记账到激活它的第一个实例之上。由于静态资源是为同一类的所有实例所共享的,这种记账是不公平的。在本发明中用Classloader标签,静态资源被记账到类加载器,使得记账更为准确。
一些现有的热点跟踪方法利用门限值排除资源计算的对象。当某一方法的资源消耗低于该门限值时,将不再跟踪该方法的调用分支,这样造成跟踪过程中的信息丢失和分析的误差。本发明中在组件中附加Boundary标签,指明需要跟踪和资源记帐的范围,例如应用中线程池的使用。作为一种常见的编程模式,程序在运行过程中生成并持有若干线程为不同的请求服务。这些线程消耗的资源与本身无关,而是由于执行用户请求造成的。本发明将通过标志它们为Boundary标签,而把这些线程消耗的资源自动地记在当前运行组件的帐上,从而解决了这一问题。
利用本发明的方法还可以帮助查找内存泄漏点。在本发明中可以采用例如Leakbot或HeapAnalyzer标签找到漏点的候选者。对于候选者标注Allocater标签则可跟踪内存分配和释放事件。在一段时间后,导出所有对象的分配、释放事件和事件发生时的堆栈。除去对应与同一对象的内存分配和释放事件,分析剩下的事件及其相应的堆栈可以帮助找出造成内存泄漏的真正原因。
图4示出按照本发明的一个实施例的将运行时事件与组件相关联的系统的方框图。本发明的将运行时事件与组件相关联的系统包括事件监视器410,上下文监视器420和推理引擎430。此外还可以包括策略存储装置440和统计池450。
事件监视器410用于获取运行时事件。事件监视器410通过主动采样或由事件被动触发而获取事件。例如可以通过主动采样来获取一个时间间隔内消耗的CPU时间。对于打开文件句柄、套接字或分配存储器这样的事件可以被动地通过各个资源的适配器411、412和413触发来获取运行时事件。适配器411-413的实现与资源的类型相关。适配器411-413可以是事件处理器或对资源进行定期采样的采样线程。
当事件监视器410获取一个事件后,通知推理引擎430。推理引擎430通知上下文监视器420获取当前运行环境的上下文并根据所述上下文确定当前组件。上下文监视器420可以是一个堆栈巡视器或者是一个执行日志读取器。堆栈巡视器获取执行堆栈的快照,执行日志读取器读取程序执行过程中被记录下来的组件调用过程。堆栈的快照与执行日志都是当前运行环境的上下文,都可以用于确定当前组件。此外,上下文监视器420还可以遍历所述上下文。如果需要,可以遍历上下文递归地确定当前组件的父组件或当前组件的调用者等等。当上下文监视器420获得当前组件后通知推理引擎430。可选地,推理引擎430带有一个缓存,存储上一次事件对应的组件和策略,以及最后分析得到的负责组件。通过与缓存中保存的组件和策略比较,推理引擎进一步判断当前组件或关联策略是否改变,如果改变,推理引擎进一步确定与所述运行时事件相关联的负责组件;否则,直接引用被缓存的负责组件作为本次事件的分析结果。
推理引擎430获取当前组件的关联策略和根据所述关联策略确定与所述运行时事件相关联的负责组件。
在策略标签附加到组件的情况下,策略标签是与组件1-n一起装载到执行堆栈1-n中的。图5示出在Java环境下实现本发明的情况。其中注释器510可以在组件的设计阶段将标识关联策略的注释附加到组件1-n中。带有已注释组件被加载器520加载到堆栈1-n。这样,在堆栈快照中既有组件又有组件的策略标签。当前组件所附加的策略标签可以从所述快照中获取。
返回图4。组件的策略标签可以存储在策略存储装置440中。策略存储装置440可以是每个组件各有一个配置文件,也可以是所有的策略标签都存储在一个配置文件。推理引擎430可以读取读取各个配置文件中策略标签,或者通过例如当前组件名检索策略存储装置中的该组件所对应的策略标签。
此外,推理引擎430还可以调用专用的API来获得当前组件的策略标签。
如果推理引擎430需要判断父组件或当前组件的调用者时,可以命令上下文监视器420执行上下文的递归,确定与所述运行时事件相关联的负责组件。
当推理引擎430获得当前事件的负责组件后,进一步在统计池450中更新负责组件的统计
图6示意性示出了可以实现根据本发明的实施例的计算设备的结构方框图。
图6中所示的计算机系统包括CPU(中央处理单元)601、RAM(随机存取存储器)602、ROM(只读存储器)603、系统总线604,硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、RAM 602、ROM 603、硬盘控制器605、键盘控制器606,串行接口控制器607,并行接口控制器608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相连,串行外部设备612与串行接口控制器607相连,并行外部设备613与并行接口控制器608相连,以及显示器614与显示器控制器609相连。
图6中每个部件的功能在本技术领域内都是众所周知的,并且图6所示的结构也是常规的。这种结构不仅用于个人计算机,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的网络应用服务器的服务器主机时,可以向图6中所示的结构添加某些部件,或者图6中的某些部件可以被省略。图6中所示的整个系统由通常作为软件存储在硬盘610中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘610中,或者从网络下载的软件可被加载到RAM 602中,并由CPU601执行,以便完成由软件确定的功能。
尽管图6中描述的计算机系统能够支持根据本发明的提供网络内容以供脱机使用的方案,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明的实施例。
本发明还可以实现为例如由图6所示计算机系统所使用的计算机程序产品,其可以包含有用于实现根据本发明的提供网络内容以供脱机使用的网络应用服务器的代码;其还可以包含有用于实现根据本发明的用于获取网络内容以供脱机使用的客户端模块的代码。在使用之前,可以把代码存储在其它计算机系统的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。
所公开的本发明的方法可以在软件、硬件、或软件和硬件的结合中实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器、个人计算机(PC)或大型机来执行。
上述实施例以Java为例进行了说明。应当理解,本发明并不限于Java环境。本发明可以用于任何采用了组件的系统,例如Java或PHP环境等。
虽然已经参考目前考虑到的实施例描述了本发明,但是应该理解本发明不限于所公开的实施例。相反,本发明旨在涵盖所附权利要求的精神和范围之内所包括的各种修改和等同布置。以下权利要求的范围符合最广泛解释,以便包含所有这样的修改及等同结构和功能。
Claims (20)
1.一种将运行时事件与组件相关联的方法,包括:
获取运行时事件;
获取当前运行环境的上下文并根据所述上下文确定当前组件;
获取当前组件的关联策略并根据所述关联策略确定与所述运行时事件相关联的负责组件。
2.根据权利要求1的方法,其中获取当前运行环境的上下文并根据所述上下文确定当前组件的步骤包括获取执行堆栈的快照或者查看执行日志,并根据所述快照或者所述日志确定当前组件。
3.根据权利要求1或2的方法,进一步包括:
在组件中附加策略标签;
将策略标签与组件一起装载到执行堆栈或被记录进入执行日志;和
获取当前组件的关联策略的步骤进一步包含从所述上下文中获取所述附加的策略标签。
4.根据权利要求1或2的方法,进一步包括:
在策略存储装置中保存组件的至少一组策略标签;和
获取当前组件的关联策略进一步包含读取策略存储装置中的所述策略标签。
5.根据权利要求1或2的方法,获取当前组件的关联策略进一步包含调用专用API获取所述策略标签。
6.根据权利要求1或2的方法,进一步包括:
保存所述运行环境的轨迹;和
递归分析当前运行环境的上下文,确定与所述运行时事件相关联的负责组件。
7.根据权利要求1或2的方法,所述策略标签是以下标签中的一个或多个:Parent,Self,Caller,Classloader,Common,Allocater,Boundary,Leakbot和HeapAnalyzer;其中
当策略标签为Self时,则确定当前组件为负责组件;
当策略标签为Parent时,则确定创建该线程的父组件为负责组件;
当策略标签为Caller时,则确定调用当前组件的组件为负责组件;
当策略标签为Classloader时,则确定装载当前组件的系统组件为负责组件;
当策略标签为Common时,则确定提供公共服务的组件为负责组件;
当策略标签为Allocater时,则确定与资源相关联的分配器为负责组件;
当策略标签为Boundary时,则确定位于执行堆栈中最上面的组件为负责组件。
8.根据权利要求1或2的方法,进一步包括:
获取当前运行环境的上下文后判断当前组件或关联策略是否改变,如果是,则确定与所述运行时事件相关联的负责组件。
9.根据权利要求1-8中任一个的方法,进一步包括:
更新负责组件的统计。
10.根据权利要求1-9中任一个的方法,其中通过主动采样或由事件被动触发而获取事件。
11.一种将运行时事件与组件相关联的系统,包括:
事件监视器,用于获取运行时事件;
上下文监视器,用于获取当前运行环境的上下文并根据所述上下文确定当前组件;
推理引擎,用于获取当前组件的关联策略和根据所述关联策略确定与所述运行时事件相关联的负责组件。
12.根据权利要求11的系统,其中上下文监视器进一步包括堆栈巡视器或者执行日志更新器,其中堆栈巡视器用于获取执行堆栈的快照,执行日志更新器用于根据当前程序执行情况更新日志信息,所述上下文监视器根据所述快照或所述日志确定当前组件。
13.根据权利要求11或12的系统,进一步包括:注释器,用于在组件中附加策略标签;
加载器,用于将策略标签与组件一起装载到执行堆栈;和
所述上下文监视器进一步从所述当前运行时的上下文中获取所述附加的策略标签。
14.根据权利要求11或12的系统,进一步包括:
策略存储装置,用于保存组件的策略标签;和
所述推理引擎进一步读取策略存储装置中的所述策略标签。
15.根据权利要求11或12的系统,其中所述推理引擎调用专用API获取所述策略标签。
16.根据权利要求11或12的系统,其中
所述上下文监视器进一步保存所述执行环境的轨迹;和
所述推理引擎递归分析当前运行环境的上下文(堆栈或者执行日志),确定与所述运行时事件相关联的负责组件。
17.根据权利要求11或12的系统,所述策略标签是以下标签中的一个或多个:Parent,Self,Caller,Classloader,Common,Allocater,Boundary,Leakbot和HeapAnalyzer;其中
当策略标签为Self时,则推理引擎确定当前组件为负责组件;
当策略标签为Parent时,则推理引擎确定创建该线程的父组件为负责组件;
当策略标签为Caller时,则确定调用当前组件的组件为负责组件;
当策略标签为Classloader时,则推理引擎确定装载当前组件的系统组件为负责组件;
当策略标签为Common时,则推理引擎确定提供公共服务的组件为负责组件;
当策略标签为Allocater时,则推理引擎确定与资源相关联的分配器为负责组件;
当策略标签为Boundary时,则推理引擎确定位于执行堆栈中最上面的组件为负责组件。
18.根据权利要求11或12的系统,其中
推理引擎进一步判断当前组件或关联策略是否改变,如果是,则推理引擎进一步确定与所述运行时事件相关联的负责组件。
19.根据权利要求11-18中任一个的系统,其中所述推理引擎进一步更新统计池中负责组件的统计。
20.根据权利要求11-19中任一个的系统,其中通过主动采样或由事件被动触发而获取事件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101534523A CN101393535B (zh) | 2007-09-19 | 2007-09-19 | 将运行时事件与组件相关联的方法和系统 |
US12/211,961 US9329969B2 (en) | 2007-09-19 | 2008-09-17 | Method and system of associating a runtime event with a component |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101534523A CN101393535B (zh) | 2007-09-19 | 2007-09-19 | 将运行时事件与组件相关联的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101393535A true CN101393535A (zh) | 2009-03-25 |
CN101393535B CN101393535B (zh) | 2013-01-23 |
Family
ID=40493838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101534523A Active CN101393535B (zh) | 2007-09-19 | 2007-09-19 | 将运行时事件与组件相关联的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9329969B2 (zh) |
CN (1) | CN101393535B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193796A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 用于持久存储开发环境测试场景信息的整合工具 |
CN104616193A (zh) * | 2015-02-05 | 2015-05-13 | 中国农业银行股份有限公司 | 一种账务信息处理方法、装置及系统 |
CN107066283A (zh) * | 2015-10-19 | 2017-08-18 | 哈曼国际工业有限公司 | 用于更新计算机装置的部件同时实现部件可用性的技术 |
CN107656668A (zh) * | 2016-07-27 | 2018-02-02 | 平安科技(深圳)有限公司 | 侧滑菜单加载方法和装置 |
CN108228421A (zh) * | 2017-12-26 | 2018-06-29 | 东软集团股份有限公司 | 数据监测方法、装置、计算机及存储介质 |
CN111209153A (zh) * | 2019-12-31 | 2020-05-29 | 联想(北京)有限公司 | 异常检测处理方法、装置及电子设备 |
CN113703878A (zh) * | 2021-10-29 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 组件的启动方法和装置、存储介质及电子设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836466B1 (en) * | 2009-10-29 | 2017-12-05 | Amazon Technologies, Inc. | Managing objects using tags |
US20110209159A1 (en) * | 2010-02-22 | 2011-08-25 | Avaya Inc. | Contextual correlation engine |
US9479398B2 (en) * | 2013-07-03 | 2016-10-25 | International Business Machines Corporation | Enforcing runtime policies in a networked computing environment |
US20220417257A1 (en) * | 2021-06-24 | 2022-12-29 | International Business Machines Corporation | Protecting accelerators from malicious network functions |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123017A (en) * | 1989-09-29 | 1992-06-16 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Remote maintenance monitoring system |
US6341359B1 (en) * | 1998-12-14 | 2002-01-22 | International Business Machines Corporation | Self-diagnosing and self correcting data entry components |
US7028298B1 (en) * | 1999-09-10 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and methods for managing resource usage |
US6557120B1 (en) * | 2000-03-31 | 2003-04-29 | Microsoft Corporation | System and method for testing software reliability over extended time |
US6865591B1 (en) * | 2000-06-30 | 2005-03-08 | Intel Corporation | Apparatus and method for building distributed fault-tolerant/high-availability computed applications |
US6732168B1 (en) * | 2000-07-05 | 2004-05-04 | Lucent Technologies Inc. | Method and apparatus for use in specifying and insuring policies for management of computer networks |
CA2315449A1 (en) * | 2000-08-10 | 2002-02-10 | Ibm Canada Limited-Ibm Canada Limitee | Generation of runtime execution traces of applications and associated problem determination |
US7350209B2 (en) * | 2001-06-29 | 2008-03-25 | Bmc Software | System and method for application performance management |
CN1549969A (zh) * | 2001-07-06 | 2004-11-24 | 关联并确定系统和企业事件的根本原因的方法和系统 | |
US6862697B1 (en) * | 2001-09-28 | 2005-03-01 | Emc Corporation | Method and system for pseudo-random testing a fault tolerant network |
DE10230883A1 (de) * | 2002-07-09 | 2004-02-19 | Siemens Ag | Automatische Auswertung von Eigenschaften eines Systems auf Basis von Ablaufprotokollen |
US20040064724A1 (en) * | 2002-09-12 | 2004-04-01 | International Business Machines Corporation | Knowledge-based control of security objects |
US8626894B2 (en) * | 2004-06-24 | 2014-01-07 | International Business Machines Corporation | Generating visualization output of event correlation information |
US7945591B2 (en) * | 2005-06-16 | 2011-05-17 | International Business Machines Corporation | Identifying problems, usage patterns, and performance in a database interface using aspect-oriented programming |
US20070016893A1 (en) * | 2005-07-14 | 2007-01-18 | International Business Machines Corporation | Tracking resource usage by applications |
US7349826B2 (en) * | 2006-05-23 | 2008-03-25 | International Business Machines Corporation | Causal ladder mechanism for proactive problem determination, avoidance and recovery |
US8813055B2 (en) * | 2006-11-08 | 2014-08-19 | Oracle America, Inc. | Method and apparatus for associating user-specified data with events in a data space profiler |
EP1933237A1 (de) * | 2006-12-15 | 2008-06-18 | Ubs Ag | Computerimplementiertes System zur Analyse, Verwaltung, Beherrschung, Bewirtschaftung und Überwachung einer komplexen Hardware-/Softwarearchitektur |
-
2007
- 2007-09-19 CN CN2007101534523A patent/CN101393535B/zh active Active
-
2008
- 2008-09-17 US US12/211,961 patent/US9329969B2/en not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193796A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 用于持久存储开发环境测试场景信息的整合工具 |
CN104616193A (zh) * | 2015-02-05 | 2015-05-13 | 中国农业银行股份有限公司 | 一种账务信息处理方法、装置及系统 |
CN104616193B (zh) * | 2015-02-05 | 2018-03-27 | 中国农业银行股份有限公司 | 一种账务信息处理方法、装置及系统 |
CN107066283A (zh) * | 2015-10-19 | 2017-08-18 | 哈曼国际工业有限公司 | 用于更新计算机装置的部件同时实现部件可用性的技术 |
CN107066283B (zh) * | 2015-10-19 | 2021-07-13 | 哈曼国际工业有限公司 | 用于更新计算机装置的部件同时实现部件可用性的技术 |
CN107656668A (zh) * | 2016-07-27 | 2018-02-02 | 平安科技(深圳)有限公司 | 侧滑菜单加载方法和装置 |
CN108228421A (zh) * | 2017-12-26 | 2018-06-29 | 东软集团股份有限公司 | 数据监测方法、装置、计算机及存储介质 |
CN111209153A (zh) * | 2019-12-31 | 2020-05-29 | 联想(北京)有限公司 | 异常检测处理方法、装置及电子设备 |
CN111209153B (zh) * | 2019-12-31 | 2021-10-22 | 联想(北京)有限公司 | 异常检测处理方法、装置及电子设备 |
CN113703878A (zh) * | 2021-10-29 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 组件的启动方法和装置、存储介质及电子设备 |
CN113703878B (zh) * | 2021-10-29 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 组件的启动方法和装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20090112783A1 (en) | 2009-04-30 |
CN101393535B (zh) | 2013-01-23 |
US9329969B2 (en) | 2016-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101393535B (zh) | 将运行时事件与组件相关联的方法和系统 | |
Brosig et al. | Architecture-level software performance abstractions for online performance prediction | |
Brunnert et al. | Continuous performance evaluation and capacity planning using resource profiles for enterprise applications | |
US20130074057A1 (en) | Selecting Functions for Memoization Analysis | |
CN105122212A (zh) | 自动化跟踪系统中的周期性优化 | |
CN105122234A (zh) | 使用成本分析来部署跟踪目标 | |
Kirbas et al. | The relationship between evolutionary coupling and defects in large industrial software | |
US20170171049A1 (en) | Systems and/or methods for remote application introspection in cloud-based integration scenarios | |
US11347619B2 (en) | Log record analysis based on log record templates | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
US20080301170A1 (en) | e-PROFILER: DYNAMIC PROFILING AND AUDITING FRAMEWORK | |
CN109542444A (zh) | Java应用的监控方法、装置、服务器和存储介质 | |
US20080235658A1 (en) | Code generation for real-time event processing | |
Huang et al. | UI driven Android application reduction | |
US11263115B2 (en) | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling | |
CN111448551B (zh) | 跟踪来自远程设备的应用活动数据并生成用于远程设备的校正动作数据结构的方法和系统 | |
CN116719579A (zh) | Ai模型可观测性实现方法、装置、电子设备及存储介质 | |
CN111914002B (zh) | 机房资源信息处理方法、装置和电子设备 | |
CN114238130A (zh) | 性能测试方法、装置、设备及存储介质 | |
CN111045891B (zh) | 基于java多线程的监控方法、装置、设备以及存储介质 | |
Szczepanik et al. | Android methods hooking detection using dalvik code and dynamic reverse engineering by stack trace analysis | |
US20120192149A1 (en) | Code generation for real-time event processing | |
Sharma et al. | Mat: A migration assessment toolkit for paas clouds | |
Dahab et al. | A software measurement framework guided by support vector machines | |
Kruglov et al. | Incorporating energy efficiency measurement into CI\CD pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |