CN111414284B - 使用保护存储的对象加载自检 - Google Patents
使用保护存储的对象加载自检 Download PDFInfo
- Publication number
- CN111414284B CN111414284B CN202010013094.1A CN202010013094A CN111414284B CN 111414284 B CN111414284 B CN 111414284B CN 202010013094 A CN202010013094 A CN 202010013094A CN 111414284 B CN111414284 B CN 111414284B
- Authority
- CN
- China
- Prior art keywords
- interest
- objects
- program
- computer
- computing device
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
- G06F2212/702—Conservative garbage collection
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
公开了使用保护存储的对象加载自检的系统和方法。在实施例中,计算机实现的方法包括:确定由用户指定的感兴趣的对象;基于多个感兴趣的对象,将预定存储器堆的第一子集分成保护区域;将感兴趣的对象中的每一个分配给保护区域中相应的一个,并将剩余对象分配给预定存储器堆的第二子集;执行程序;检测感兴趣的对象中的一个从保护区域中的一个加载;生成陷阱,该陷阱将执行程序的控制转移到信号处理程序,其中信号处理程序被指定为执行与感兴趣的对象中的一个相关联的用户定义的任务;和由计算设备的信号处理程序执行用户定义的任务。
Description
技术领域
本发明总体上涉及对象自检(introspection),并且更具体地,涉及使用保护存储(guarded storage)的对象加载自检。
背景技术
保护存储(guarded storage,GS)设施是计算设备的一个特征,其允许程序保护存储器中的区域,以便执行对该区域的引用的保护加载触发用户定义的中断处理程序或信号处理程序(handler)。GS设施使企业规模Java应用能够以更短的周期暂停来运行,从而减少了Java垃圾收集期间的程序暂停。Java是一种通用的编程语言,它是并行的、基于类的、面向对象的,并且被设计为产生可以在任何计算机系统上运行的程序。Java使用自动垃圾收集器来管理对象生命周期中的存储器。存在也使用自动垃圾收集的其他类似于Java的编程语言。
发明内容
在本发明的一个方面,一种计算机实现的方法包括:由计算设备确定由用户指定的感兴趣的对象;由计算设备基于多个感兴趣的对象将预定存储器堆(heap)的第一子集分成保护区域;由计算设备将感兴趣的对象中的每一个分配给保护区域中相应的一个,并将剩余对象分配给预定存储器堆的第二子集;由计算设备执行程序;由计算设备检测感兴趣的对象中的一个从保护区域中的一个加载;由计算设备生成陷阱(trap),该陷阱将执行程序的控制转移到信号处理程序,其中信号处理程序被指定为执行与感兴趣的对象中的一个相关联的用户定义的任务;和由计算设备的信号处理程序执行用户定义的任务。
在本发明的另一个方面,存在一种计算机程序,包括计算机可读存储介质,其包含有程序指令。程序指令可由计算设备执行,以使计算设备:确定由用户指定的感兴趣的对象;基于多个感兴趣的对象,将预定存储器堆的第一子集分成保护区域;将感兴趣的对象中的每一个分配给保护区域中相应的一个,并将剩余对象分配给预定存储器堆的第二子集;执行程序;在程序执行期间,检测感兴趣的对象中的一个从保护区域中的一个加载;生成陷阱,该陷阱将程序的执行的控制转移到信号处理程序,其中信号处理程序被指定为执行与感兴趣的对象中的一个相关联的用户定义的任务;和由信号处理程序执行用户定义的任务。
在本发明的另一方面,存在一种系统,包括:处理器、计算机可读存储器和与计算设备相关联的计算机可读存储介质;确定由用户指定的感兴趣的对象的程序指令;基于多个感兴趣的对象将预定存储器堆的第一子集分成保护区域的程序指令;用于将感兴趣的对象中的每一个分配给保护区域中相应的一个,并将剩余对象分配给预定存储器堆的第二子集的程序指令;执行程序的程序指令;在程序的执行期间,检测感兴趣的对象中的一个从保护区域中的一个加载的程序指令;生成陷阱的程序指令,该陷阱将程序的执行的控制转移到信号处理程序,其中信号处理程序被指定为执行与感兴趣的对象中的一个相关联的用户定义的任务;和由信号处理程序执行用户定义的任务的程序指令。程序指令存储在计算机可读存储介质上,供处理器经由计算机可读存储器执行。
附图说明
通过本发明示例性实施例的非限制性示例,参考所述多个附图,在下面的详细描述中描述本发明。
图1描绘了根据本发明实施例的计算基础架构。
图2示出了根据本发明各方面的示例性环境。
图3示出了根据本发明各方面的方法步骤的流程图。
具体实施方式
本发明总体上涉及对象自检,并且更具体地,涉及使用保护存储的对象加载自检。在实施例中,本发明的系统和方法使用存储器堆的保护区域来触发相应的用户定义的信号处理程序,从而在运行时(runtime)提供用户定义的对象自检。在各方面,一种用于使用保护存储的对象加载自检的计算机实现的过程包括,响应于将预定存储器堆的子集分成预定数量的区域,将预定数量的区域中的每个区域仅分配给一种类型的用户指定的对象,同时为所有其他对象分配预定存储器堆的剩余部分。在各方面,该过程还包括:修改对象引用的加载以使用保护加载指令;定义加载感兴趣的对象时要执行的一组用户定义的任务;使用保护存储设施的预定数量区域中的保护区域;响应于检测到感兴趣的对象从保护区域加载,生成陷阱,该陷阱将控制转移到执行该组用户定义的任务的信号处理程序;执行常规加载;并将执行返回到加载感兴趣的对象的程序。
对于软件开发人员来说,确定一个或另一个对象(例如,Java对象)占用了多少存储器是很有用的。本文使用的术语对象是指代表现实生活实体的面向对象编程的基本单元。例如,典型的Java对象包括状态(例如,对象的属性和特性);行为(例如,对象的方法和对象对其他对象的响应);和身份(例如,使对象能够与其他对象交互的对象的唯一名称)。对象自检可用于分析目的或调试目的。本文使用的术语对象自检(有时称为反射(reflection)或类型自检)是指计算设备在运行时确定对象的类型或特性的能力。例如,在具有托管运行时的编程语言(例如,Java)中,软件程序员可能希望对象级自检,或者是为了分析目的,或者是为了调试目的。例如,出于分析的目的,程序员可能希望计算对特定的用户定义类型的对象的引用被加载的频率。例如,在调试的情况下,开发人员可能希望验证对象的不变特性没有被破坏,或者对象没有被损坏。
编程对象通常指向或引用其他对象。查看对象之间关系的一种方式是通过使用对象图。为了改进或开发软件代码,程序员可以使用对象图的静态分析。或者,可以利用对象的动态分析,其中开发者可以确定在程序的执行期间利用了哪些引用。在托管运行时环境中,虚拟机(virtual machine,VM),以及也就是即时(Just-In-Time,JIT)编译器可以在运行时检查对象是否属于用户希望分析的类型,如果是,VM可以触发用户定义的任务。然而,这种解决方案要求不加区分地对所有对象加载进行运行时检查,导致路径长度增加,即使对于用户不希望分析的大多数对象也是如此。特别地,当感兴趣的对象被频繁使用时,利用JIT编译器对感兴趣的对象的加载事件进行计数会显著变慢相关联的程序的执行。因此,这种解决方案会导致很大的开销。
有利地,本发明的实施例提供了一种在加载感兴趣的对象时运行用户定义的任务的机制,而不增加开销。在各方面,结合垃圾收集器(garbage collector,GC),特定对象类型被迁移到保护区域,这允许用户定义的自检,而不必重启VM。因此,本发明的实施例为在对象自检期间不期望的开销和变慢的技术问题提供了技术解决方案。因此,实施例改善了计算系统的功能(例如,在程序执行期间降低了开销成本)。此外,本发明的实施例通过在运行时提供非常规自检步骤来获得用户感兴趣的对象的自检数据,构成了软件编程领域的改进。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如互联网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
现在参考图1,示出了计算基础架构的示例的示意图。计算基础架构10仅仅是合适的计算基础架构的一个示例,并不旨在对本文描述的本发明实施例的使用范围或功能提出任何限制。无论如何,计算基础架构10能够实现和/或执行上文阐述的任何功能。
在计算基础架构10中,存在计算机系统(或服务器)12,其可与许多其他通用或专用计算系统环境或配置一起操作。适用于与计算机系统12一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、胖客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可以包括例程、程序、对象、组件、逻辑、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。计算机系统12可以在分布式云计算环境中实施,在分布式云计算环境中,任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1所示,计算基础架构10中的计算机系统12以通用计算设备的形式示出。计算机系统12的组件可以包括但不限于一个或多个处理器或处理单元(例如,CPU)16、系统存储器28以及将包括系统存储器28在内的各种系统组件耦合到处理器16的总线18。
总线18代表几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线架构中的任何一种的处理器或本地总线。作为示例而非限制,这种架构包括工业标准架构(Industry Standard Architecture,ISA)总线、微通道架构(Micro Channel Architecture,MCA)总线、增强型ISA(EnhancedISA,EISA)总线、视频电子标准协会(Video Electronics Standards Association,VESA)本地总线和外围组件互连(Peripheral Component Interconnect,PCI)总线。
计算机系统12通常包括各种计算机系统可读介质。这种介质可以是由计算机系统12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机系统12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以被提供用于从不可移动的非易失性磁介质(未示出,通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动的非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从可移动的非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据媒体接口连接到总线18。如下文将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本发明实施例的功能的一组(例如,至少一个)程序模块。
作为示例而非限制,具有一组(至少一个)程序模块42的程序/实用程序40可以存储在存储器28中,以及存储在操作系统、一个或多个应用程序、其他程序模块和程序数据中。操作系统、一个或多个应用程序、其他程序模块和程序数据或它们的一些组合中的每一个都可以包括网络环境的实现。程序模块42通常执行本文描述的本发明实施例的功能和/或方法。
计算机系统12还可以与一个或多个外部设备14(诸如键盘、定点设备、显示器24等);使用户能够与计算机系统12交互的一个或多个设备;和/或使得计算机系统12能够与一个或多个其他计算设备通信的任何设备(例如网卡、调制解调器等)通信。这种通信可以经由输入/输出(I/O)接口22发生。然而,计算机系统12可以经由网络适配器20与一个或多个网络通信,诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如互联网)。如图所示,网络适配器20经由总线18与计算机系统12的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统12结合使用。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据存档存储系统等。
图2示出了根据本发明各方面的示例性环境。在实施例中,该环境包括服务器50,该服务器50具有存储器堆52、用户定义的任务模块54、保护存储设施56以及在60-63处表示的一个或多个信号处理程序。在实施例中,服务器50包括计算设备12的一个或多个组件,并且可以是大型机。在各方面,服务器50包括存储器堆52的第一子集66和存储器堆52的第二子集67。在实施例中,图2的环境是Java环境或其他类似的托管运行时环境。例如,在实现中,存储器堆52是Java虚拟机(Java virtual machine,JVM)中的存储器堆。本文使用的术语存储器堆52(堆)是指用于动态分配的存储器区域;这意味着存储器块可以以任意顺序分配和释放,并且可以多次访问(与后进先出(Last-In-First-Out)的堆栈存储器相反)。在各方面,垃圾收集在存储器堆52上运行,以释放不再使用的对象所使用的存储器。
在实现中,服务器50包括一个或多个被配置为由服务器50执行并执行本文描述的功能的编程模块(例如,图1的程序模块42)。在实施例中,服务器50的用户定义的任务模块54被配置为接收和存储与用户感兴趣的特定对象类型相关联的用户定义的任务。
本文使用的术语保护存储设施56是指服务器50的一个特征,该特征允许程序保护存储器中的区域,使得执行对该保护区域的引用的保护加载触发用户定义的信号处理程序(例如,信号处理程序60-63)。在各方面,保护存储设施56被配置为使得企业规模Java应用能够以更短的周期暂停来运行。在实施例中,保护存储设施56在大型机(例如,服务器50)中,被配置为允许用户保护存储器的连续区域(例如,存储器堆52)。
在各方面,本文使用的术语信号处理程序(例如,信号处理程序60-63)是指当相应信号出现时由目标环境调用的功能。目标环境暂停程序的执行,直到信号处理程序返回或调用。在各方面,信号处理程序60-63被指定为执行一组用户定义的任务。
在实施例中,服务器50包括比图1和图2所示更多或更少的组件。在实施例中,分离的组件被集成到单个计算组件或模块中。附加地或替代地,单个组件可以被实现为多个计算组件或模块。
图3示出了根据本发明各方面的方法的流程图。图3的方法的步骤可以在图2所示的环境中执行,并且参考图2所示的元件进行描述。
在步骤300,服务器50确定一个或多个用户指定的感兴趣的对象(以下称为感兴趣的对象)。在本发明的实现中,用户利用服务器50的用户界面(例如,图1的输入/输出(I/O)界面22)来指示用户感兴趣的对象,并且服务器50的用户定义的任务模块54识别并存储感兴趣的对象。在实施例中,用户定义的感兴趣的对象是以对象类型或类别的形式。如上所述,本文使用的术语对象是指代表现实生活实体的面向对象编程的基本单元。例如,典型的Java对象包括状态(例如,对象的属性和特性);行为(例如,对象的方法和对象对其他对象的响应);和身份(例如,使对象能够与其他对象交互的对象的唯一名称)。
在步骤301,服务器50基于感兴趣的对象将存储器堆52的第一子集66分成预定数量的保护区域70-73。在实现中,服务器50将预定存储器堆52分成多个保护区域70-73,这些保护区域对应于在步骤300确定的感兴趣的对象的数量,其中为感兴趣的对象中的每一个创建一个保护区域70-73。例如,确定四(4)个感兴趣的对象将导致四(4)个保护区域(例如,保护区域70-73)。因此,在实施例中,用户可以指定多于一种类型的对象来分析。在各方面,存储器堆52的剩余部分(第二子集67)被用于所有其他对象(即,未被识别为感兴趣的对象的对象)。在实现中,使用保护存储设施56来保护保护区域70-73。软件程序员可以在步骤301的实现中利用存储器分配工具。
在步骤302,服务器50将每个保护区域70-73仅分配给一种类型的感兴趣的对象,并将所有剩余对象分配给存储器堆52的第二子集。例如,第一类型的感兴趣的对象与保护区域70相关联,第二类型的感兴趣的对象与保护区域71相关联,等等。
在步骤303,服务器50确定当加载感兴趣的对象中的每一个时要执行的一组用户定义的任务。在本发明的实现中,用户利用服务器50的用户界面(例如,图1的输入/输出(I/O)界面22)来指示要为在步骤300确定的感兴趣的对象中的每一个执行的任务。要执行的任务可以包括,例如,确定哪些对象字段被最频繁地访问的任务,计算感兴趣的对象被加载多少次的任务,或者向软件开发者或程序员提供程序分析数据的任何其他任务。可以步骤303的实现中利用用于定义任务的软件编程工具。
在步骤304,服务器50执行程序。在实现中,程序是定义感兴趣的对象的软件开发人员或程序员感兴趣的程序。在实施例中,程序执行在Java环境中被执行。服务器50可以在步骤304的执行中利用程序执行工具。
在步骤305,服务器50确定专用加载指令,由此对象引用的加载被修改为使用保护加载指令。在各方面,保护加载指令包括对应于保护区域70-73中的一个的地址。在实现中,当线程(即,编程指令的序列)使用保护加载指令加载值时,服务器50能够确定程序执行的控制是否应该转移到用户定义的信号处理程序60-63。在实施例中,线程中的元数据允许保护存储设施56运行该线程。
在步骤306,服务器50检测感兴趣的对象从存储器堆52的预定义保护区域70-73中的一个加载。在实施例中,当线程使用保护加载指令加载值时,服务器50确定该值是否是与保护区域70-73相关联的引用范围内的引用,如果是,则服务器50识别感兴趣的对象已经被加载。在各方面,服务器50确定对象加载的地址是否在为保护区域70-73指定的范围内,如果是,则服务器50识别感兴趣的对象已经被加载。
在步骤307,服务器50基于在步骤306检测到感兴趣的对象从保护区域70-73中的一个加载,捕捉(trap)程序执行的控制并将其转移到相关联的用户定义的信号处理程序60-63。例如,在确定感兴趣的对象已经从保护区域70加载时,服务器50捕捉程序执行的控制并将其转移到信号处理程序60,信号处理程序60被配置为执行与来自保护区域70的感兴趣的对象相关联的任务。在实现中,来自保护区域70-73的所有加载必然导致硬件(服务器50)生成陷阱,该陷阱将控制转移到适当的信号处理程序60-63。
在步骤308,控制在步骤307中被转移到的信号处理程序(例如,60)执行用户定义的任务或与信号处理程序(例如,60)相关联的任务。例如,信号处理程序60可以执行与计算特定对象类型(感兴趣的对象)的加载相关联的任务。
在步骤309,步骤308的信号处理程序(例如,60)将程序执行的控制返回给程序。在实施例中,感兴趣的对象的常规加载由程序执行,而与步骤308无关。本文使用的术语“常规加载”是指仅从指定地址加载一些数据的加载。在实现中,保护加载也从指定的地址加载一些数据,但是在加载之前,它检查地址是否在保护范围内;如果是,则硬件(服务器50)根据步骤307启动陷阱。应当理解,如果在步骤307没有启动陷阱,程序的执行继续,就好像加载指令是“常规加载”指令一样。在替代实施例中,将控制转移到信号处理程序步骤307干扰了感兴趣的对象的常规加载。
可选地,在步骤310,在该执行的控制在步骤309返回到程序之前,服务器50执行感兴趣的对象的常规加载。因此,在由信号处理程序(例如,60)在步骤308对感兴趣的对象的处理干扰感兴趣的对象的常规加载的实现中,服务器50可以在步骤310完成加载。
在步骤311,服务器50基于在步骤308执行的用户定义的任务向用户提供输出。应当理解,在实施例中,重复图3的步骤(例如,步骤306-310)以生成聚合数据(例如,感兴趣的对象的分析数据),服务器50可以将其格式化为输出用于用户的消耗。在一个示例中,服务器50向用户提供关于字符串长度分布的信息作为输出。在另一个示例中,服务器50向用户提供在步骤308的实现期间收集的聚合数据的直方图。
在实施例中,服务提供商可以提供执行本文描述的过程。在这种情况下,服务提供商可以为一个或多个客户创建、维护、部署、支持等执行本发明的过程步骤的计算机基础架构。例如,这些客户可以是任何使用技术的企业。作为回报,服务提供商可以根据订阅和/或费用协议从(多个)客户处接收支付,和/或服务提供商可以从向一个或多个第三方销售广告内容中接收支付。
在又一个实施例中,本发明提供了一种使用保护存储的对象加载自检的计算机实现方法。在这种情况下,可以提供诸如计算机系统12(图1)的计算机基础架构,并且可以获得(例如,创建、购买、使用、修改等)用于执行本发明的过程的一个或多个系统并部署到计算机基础架构。就此而言,系统的部署可以包括以下一个或多个:(1)从计算机可读介质在诸如计算机系统12(如图1所示)的计算设备上安装程序代码;(2)向计算机基础架构添加一个或多个计算设备;以及(3)合并和/或修改计算机基础架构的一个或多个现有系统,以使计算机基础架构能够执行本发明的过程。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (9)
1.一种计算机实现的方法,包括:
由计算设备确定由用户指定的感兴趣的对象,其中所述感兴趣的对象包括面向对象编程的基本单元;
由计算设备基于对应数量的感兴趣的对象将预定存储器堆的第一子集分成保护区域,其中所述预定存储器堆包括用于动态分配的存储器区域;
由计算设备将所述感兴趣的对象中的每一个分配给所述保护区域中相应的一个,并将剩余对象分配给所述预定存储器堆的第二子集;
由计算设备执行程序;
由计算设备检测所述程序的感兴趣的对象中的一个从所述预定存储器堆的所述保护区域中的一个加载;
由计算设备响应于检测到所述程序的所述感兴趣的对象中的一个从所述预定存储器堆的所述保护区域中的一个加载来生成陷阱,所述陷阱将执行程序的控制转移到信号处理程序,其中所述信号处理程序被指定为执行与所述感兴趣的对象中的一个相关联的用户定义的对象自检任务;
由计算设备的所述信号处理程序执行所述用户定义的对象自检任务;和
由计算设备执行所述感兴趣的对象的常规加载。
2.根据权利要求1所述的计算机实现的方法,其中,执行程序发生在Java环境中。
3.根据权利要求1所述的计算机实现的方法,还包括由计算设备确定与所述感兴趣的对象中的每一个相关联的用户定义的对象自检任务,包括与所述感兴趣的对象中的一个相关联的用户定义的对象自检任务,其中所述用户定义的对象自检任务中的每一个被配置为在加载了相关联的感兴趣的对象时被执行。
4.根据权利要求1所述的计算机实现的方法,还包括由计算设备确定保护加载指令,其中所述感兴趣的对象的引用的加载被修改为使用所述保护加载指令。
5.根据权利要求1所述的计算机实现的方法,还包括将执行程序返回到加载所述感兴趣的对象中的一个的程序。
6.根据权利要求1所述的计算机实现的方法,还包括由计算设备基于所述用户定义的对象自检任务向用户提供输出。
7.一种计算机可读存储介质,其包含有程序指令,所述程序指令可由计算设备执行,以使所述计算设备实现根据权利要求1-6中的一个所述的方法。
8.一种系统,包括:
与计算设备相关联的处理器、计算机可读存储器和计算机可读存储介质;
实现根据权利要求1-6中的一个所述的方法的程序指令。
9.一种系统,包括用于实现根据权利要求1-6中的一个所述的方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/241,157 US11080182B2 (en) | 2019-01-07 | 2019-01-07 | Object load introspection using guarded storage |
US16/241,157 | 2019-01-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414284A CN111414284A (zh) | 2020-07-14 |
CN111414284B true CN111414284B (zh) | 2023-08-18 |
Family
ID=71405158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010013094.1A Active CN111414284B (zh) | 2019-01-07 | 2020-01-07 | 使用保护存储的对象加载自检 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11080182B2 (zh) |
CN (1) | CN111414284B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678454A (zh) * | 2012-09-11 | 2014-03-26 | 国际商业机器公司 | 依用户而定的合成的上下文对象匹配方法和系统 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US6925639B2 (en) * | 2001-02-23 | 2005-08-02 | Microsoft Corporation | Method and system for register allocation |
AU2002305490B2 (en) * | 2001-05-09 | 2008-11-06 | Sca Ipla Holdings, Inc. | Systems and methods for the prevention of unauthorized use and manipulation of digital content |
US7010555B2 (en) * | 2002-10-17 | 2006-03-07 | International Business Machines Corporation | System and method for compacting a computer system heap |
US7840856B2 (en) | 2002-11-07 | 2010-11-23 | International Business Machines Corporation | Object introspection for first failure data capture |
US7594111B2 (en) * | 2002-12-19 | 2009-09-22 | Massachusetts Institute Of Technology | Secure execution of a computer program |
CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
US7770169B2 (en) * | 2004-05-17 | 2010-08-03 | Oracle America, Inc. | Thread rendezvous for read-only code in an object-oriented computing environment |
US7313566B1 (en) * | 2004-12-23 | 2007-12-25 | Sun Microsystems, Inc. | Method and apparatus for isolating selected heap objects using a faulting address trap |
US20060143227A1 (en) | 2004-12-27 | 2006-06-29 | Helm Martin W | System and method for persisting software objects |
US7711937B1 (en) * | 2005-08-17 | 2010-05-04 | Oracle America, Inc. | Trap-based mechanism for tracking accesses of logical components |
US7769964B2 (en) * | 2006-08-21 | 2010-08-03 | Intel Corporation | Technique to perform memory reference filtering |
US9027011B1 (en) * | 2006-08-31 | 2015-05-05 | Oracle America, Inc. | Using method-profiling to dynamically tune a virtual machine for responsiveness |
US8566812B1 (en) * | 2006-08-31 | 2013-10-22 | Oracle America, Inc. | Using observed object patterns to dynamically tune a virtual machine for responsiveness |
US8725974B2 (en) * | 2007-01-17 | 2014-05-13 | Oracle America, Inc. | Page-protection based memory access barrier traps |
US8245002B2 (en) * | 2008-10-08 | 2012-08-14 | International Business Machines Corporation | Call stack protection |
US20100106926A1 (en) * | 2008-10-25 | 2010-04-29 | International Business Machines Corporation | Second failure data capture problem determination using user selective memory protection to trace application failures |
US8972954B2 (en) * | 2009-07-13 | 2015-03-03 | Adobe Systems Incorporated | Debugging method using program inspectors to debug programs developed using frameworks and libraries |
US8327039B2 (en) * | 2009-08-14 | 2012-12-04 | Cadence Design Systems, Inc. | Integrated DMA processor and PCI express switch for a hardware-based functional verification system |
US8713294B2 (en) * | 2009-11-13 | 2014-04-29 | International Business Machines Corporation | Heap/stack guard pages using a wakeup unit |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
JP5910297B2 (ja) * | 2012-01-17 | 2016-04-27 | ソニー株式会社 | 情報処理装置、icチップ、情報処理方法、プログラム、及び情報処理システム |
EP3005120A2 (en) | 2013-05-30 | 2016-04-13 | Veracode, Inc. | Systems and methods for remote analysis of software applications |
US20170371573A1 (en) * | 2016-06-24 | 2017-12-28 | Samsung Electronics Co., Ltd. | Method of operating storage medium, method of operating host controlling the storage medium, and method of operating user system including the storage medium and the host |
KR102573921B1 (ko) * | 2016-09-13 | 2023-09-04 | 삼성전자주식회사 | 바이러스/멀웨어로부터 안전한 저장 장치, 그것을 포함한 컴퓨팅 시스템 및 그것의 방법 |
US20190073473A1 (en) * | 2017-09-01 | 2019-03-07 | Dornerworks, Ltd. | Dynamic security domain data flow analysis via passive monitoring |
-
2019
- 2019-01-07 US US16/241,157 patent/US11080182B2/en active Active
-
2020
- 2020-01-07 CN CN202010013094.1A patent/CN111414284B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678454A (zh) * | 2012-09-11 | 2014-03-26 | 国际商业机器公司 | 依用户而定的合成的上下文对象匹配方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11080182B2 (en) | 2021-08-03 |
US20200218651A1 (en) | 2020-07-09 |
CN111414284A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11709705B2 (en) | Event proxies for functions-as-a-service (FaaS) infrastructures | |
US9934005B2 (en) | Dynamically building locale objects or subsections of locale objects based on historical data | |
US9852015B2 (en) | Automatic discovery of a JavaScript API | |
US9684786B2 (en) | Monitoring an application in a process virtual machine | |
US6539501B1 (en) | Method, system, and program for logging statements to monitor execution of a program | |
US7406684B2 (en) | Compiler, dynamic compiler, and replay compiler | |
US9489182B1 (en) | Transparent process interception | |
US10452428B2 (en) | Application execution with optimized code for use profiles | |
US9632816B2 (en) | Scaling past the Java virtual machine thread limit | |
CN111639018A (zh) | 一种内存泄漏检测方法和装置 | |
US20190324782A1 (en) | Class splitting in object-oriented environments | |
US20180227201A1 (en) | System, method and computer program product for test-driven node selection for a distributed system | |
US9009684B2 (en) | Method, apparatus and product for porting applications to embedded platforms | |
CN111414284B (zh) | 使用保护存储的对象加载自检 | |
US10481882B2 (en) | Reducing waste areas inside strings | |
US20230236922A1 (en) | Failure Prediction Using Informational Logs and Golden Signals | |
US10795800B2 (en) | Programming language runtime deferred exception handling | |
US10496513B2 (en) | Measurement of computer product usage | |
CN113342633A (zh) | 一种性能测试方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |