CN106886474B - 用于存储器嫌疑检测的方法和系统 - Google Patents
用于存储器嫌疑检测的方法和系统 Download PDFInfo
- Publication number
- CN106886474B CN106886474B CN201610161984.0A CN201610161984A CN106886474B CN 106886474 B CN106886474 B CN 106886474B CN 201610161984 A CN201610161984 A CN 201610161984A CN 106886474 B CN106886474 B CN 106886474B
- Authority
- CN
- China
- Prior art keywords
- memory
- application
- memory allocation
- metrics
- allocation
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- 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
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/865—Monitoring of software
-
- 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/87—Monitoring of transactions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种用于存储器嫌疑检测的方法和系统。用于在应用运行环境中检测存储器嫌疑的方法包括:系统地执行与应用相关的多个事务。执行多个事务导致生成度量。所述度量包括与事务相关的存储器分配信息和应用存储器信息。所述度量被周期性地获取。基于周期性获取的度量,从多个事务中检测由于有嫌疑的存储器分配而受影响的一组事务。
Description
相关申请的交叉引用
本申请要求于2015年12月16日提交的名称为“Methods and Systems for MemorySuspect Detection”的印度专利申请第4721/MUM/2015号的优先权,其全部内容通过引证结合于此。
技术领域
本文中的实施方式总体涉及运行时的应用环境中的存储器嫌疑的检测。
背景技术
在应用环境中,应用响应时间和存储器(memory,内存)利用率是能够影响应用效率的重要因素。从利用率角度来看,应用响应时间和存储器利用率有时被视为两种不同的资源,然而,应用响应时间与存储器利用率密切相关。如果涉及应用的应用数据被缓存在存储器中,则应用的响应时间可得到改善。在大型应用环境中,数据在存储器中的缓存呈现出一些挑战。例如,许多企业应用面临严重的性能问题,诸如响应时间慢以及存储器不足的错误。在应用和/或服务器、第三方部件等的迁移和/或更新的过程中经常观察到这种问题。
在用于识别与存储器缓存有关的问题的现有方法中,剖析员定期获得堆转储,然后借助于一些存储器分析工具来分析该堆转储。在另一方法中,应用使用剖析器来描述存储器(对象)分配或每n个分配的轮廓以了解存储器的大致利用率。尽管该方法识别大量对象,但是它仅在少数情况下识别根本原因及对应使用情况。在现有方法中,主要目标是获得或分离使用庞大存储器的对象。但是在大部分情况下,存储器的管理不仅与创建哪一个对象或者在什么位置创建该对象相关,而且也与应用的使用情况相关。存在有相同代码用于不止一种使用情况/情形的可能性。因此,不论基础技术如何,存储器的不当使用都不仅可导致存储器错误而且也大大影响响应时间。因此,监控和跟踪存储器的适当利用都有助于应用的更好性能。
发明内容
为了提供对实施方式的基本理解,在下面呈现本公开的一些实施方式的简要概括。本概括不是实施方式的扩展概述。它并非旨在确认实施方式的主要/关键元素或者描绘实施方式的范围。它仅有的目的是以简化形成呈现一些实施方式,以作为以下呈现的更详细描述的开头。
鉴于上述内容,本文的实施方式提供一种用于检测存储器嫌疑的方法和系统。在一个方面中,提供一种用于检测存储器嫌疑的计算机实现的方法。该方法包括系统地执行与应用相关的多个事务(transaction)。执行多个事务导致生成度量(metrics)。关于执行事务而生成的所述度量包括应用存储器信息以及与事务相关的存储器分配信息。周期性获取在系统地执行多个事务时生成的度量。基于周期性获取的度量,从多个事务中检测由于有嫌疑的存储器分配而受影响的一组事务。度量的存储器分配信息有助于识别受影响的该一组事务。
在另一方面中,提供一种用于检测存储器嫌疑的计算机实现的系统。该系统包括至少一个存储器;以及至少一个处理器,该至少一个存储器耦接至至少一个处理器,其中,至少一个处理器能够执行在至少一个存储器中存储的编程指令以系统地执行与应用相关的多个事务。执行多个事务导致生成度量。关于执行事务所生成的所述度量包括应用存储器信息以及与事务相关的存储器分配信息。周期性获取在系统地执行多个事务时生成的度量。基于周期性获取的度量,从多个事务中检测由于有嫌疑的存储器分配而受影响的一组事务。度量的存储器分配信息有助于识别受影响的该一组事务。
在又一方面中,提供一种具有用于执行用于检测存储器嫌疑的方法的计算机程序装载在其上的非暂时性计算机可读介质。该方法包括系统地执行与应用相关的多个事务。执行多个事务导致生成度量。关于执行事务所生成的所述度量包括应用存储器信息以及与事务相关的存储器分配信息。周期性获取在系统地执行多个事务时生成的度量。基于周期性获取的度量,从多个事务之中检测由于有嫌疑的存储器分配而受影响的一组事务。度量的存储器分配信息有助于识别受影响的该一组事务。
在又一实施方式中,提供一种用于存储器嫌疑检测的计算机实现的方法。该方法包括识别应用的多个事务。多个事务与有嫌疑的存储器分配相关,并且基于至少一个预定标准来识别。至少一个预定标准包括:识别与常见存储器问题已知的类、与来自先前执行中的存储器问题相关的类以及与用户兴趣相关的类中的一个或多个相关的存储器分配。进一步地,该方法包括:系统地执行多个事务以发起多个存储器分配请求,其中,执行多个事务导致生成度量。关于执行事务所生成的度量至少包括与事务相关的存储器分配信息,与多个事务中的事务相关的存储器分配信息包括存储器分配类型、时间戳、尺寸以及存储器分配起源(origin)。周期性地获取系统地执行多个事务时所生成的度量。周期性获取度量包括:利用对应唯一标识符来标记多个存储器分配请求中的每一个,其中,与多个存储器分配请求中的一个存储器分配请求相关的对应唯一标识符包括:对应分配的存储器位置的哈希码、响应于存储器分配请求而创建的对象的类型、对象创建的时间戳以及对象从源以及运行时间中的位置(the location of the object from source and runtime)。对应于多个事务中的每一个的度量与对应唯一标识符相关。基于度量以及对应唯一标识符,从多个事务中识别由于有嫌疑的存储器分配而受影响的一组事务。
在又一实施方式中,提供一种具有用于执行用于检测存储器嫌疑的方法的计算机程序装载在其上的非暂时性计算机可读介质。该方法包括识别应用的多个事务。多个事务与有嫌疑的存储器分配相关,并且基于至少一个预定标准来识别。至少一个预定标准包括:识别与常见存储器问题已知的类、与来自先前执行中的存储器问题相关的类以及与用户兴趣相关的类中一个或多个相关的存储器分配。进一步地,该方法包括:系统地执行多个事务以发起多个存储器分配请求,其中,执行多个事务导致生成度量。关于执行事务所生成的度量至少包括与事务相关的存储器分配信息,与多个事务中的事务相关的存储器分配信息包括存储器分配类型、时间戳、尺寸以及存储器分配起源。周期性地获取当系统地执行多个事务时生成的度量。周期性获取度量包括:利用对应唯一标识符来标记多个存储器分配请求中的每一个,其中,与多个存储器分配请求中的存储器分配请求相关的对应唯一标识符包括:对应分配存储器位置的哈希码、响应于存储器分配请求而创建的对象的类型、对象创建的时间戳以及对象从源以及运行时间中的位置。对应于多个事务中的每一个事务的度量与对应唯一标识符相关。基于度量以及对应唯一标识符,从多个事务中识别由于有嫌疑的存储器分配而受影响的一组事务。
附图说明
参考附图来描述详细说明。在图中,参考标号的最左侧数字(多个数字)表示第一次出现该参考标号时的图。整个说明书附图,相同标号用于引用相同特征及模块。
图1示出根据本主题的实施方式的用于检测与示出的应用相关的存储器嫌疑的网络实施例;
图2示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的系统的框图;
图3示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的功能流的示例性表示;
图4示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的存储器监控会话的示例性表示;
图5示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的方法的流程图;以及
图6A和图6B示出根据另一示例性实施方式的用于检测与应用相关的存储器嫌疑的方法的流程图。
本领域技术人员应理解,本文中的任何框图表示体现本主题的原理的说明性系统和设备的概念图。类似地,应理解,任何流程图、流程图表等表示可基本上在计算机可读介质中表示并且由计算机或处理器执行的各种处理,而不管计算机或处理器是否被明确示出。
具体实施方式
本公开涉及一种用于检测应用环境中的存储器嫌疑的系统和方法。参考本公开,“应用”可包括“应用软件”,其可包含功能性的一个或多个单元(例如,具有电子邮件功能的网络门户、数据库程序、单词处理程序、记帐程序、数值分析程序)。“应用”也可包括“服务”,其可包含功能性的一个逻辑单元(例如,负责数据的转换、存储和/或检索的自主单元,诸如数据库管理服务或数据库应用编程接口(API)服务)。与应用相关的服务可以是关于与应用提供的事务或使用情况相关的各种程序。例如,在线订票应用可包括用于各种事务或使用情况(诸如登入应用、搜索可订票、在线支付、酒店预订、出租车预订等)的程序。在一些实施方式中,应用可以是独立Java应用。在一些实施方式中,应用可以是可利用多种资源的复杂企业应用。
在执行与应用相关的各种程序或使用情况的过程中,要求应用在与运行该应用的系统有关的存储器的一部分中存储用于这种程序的临时信息。系统通常具有有限的可用存储器,并且因此如果一个应用使用系统可用存储器的一大部分,则为此,其他应用可能不能够访问需要的存储器。为了解决这种情况,要求应用释放先前分配给该应用的存储器。具体地,一旦释放存储器,它就被重分配到系统,并且该系统可将该存储器进一步重分配至任意其他应用或者需要存储器的相同应用的其他对象。向应用分配存储器的一部分被称为‘存储器分配’或‘对象分配’。
在一些情形中,分配至应用的存储器不被释放,并且甚至当使用该应用时,该存储器仍然保持分配至该应用。在使用之后存储器不被清理的这种情形被称为‘存储器泄露’。例如,在‘机票预订’应用的情况下,一旦用户登入到网站,用户的配置文件就可能被加载到存储器。在登入时,用户可执行多次事务,诸如搜索、预订、支付等。但是用户配置文件以及与用户配置文件有关的数据可保持有效并且存储在存储器中,直至用户退出应用登入。与用户配置文件有关的数据保持存储在存储器中而不被清理的情况可被视为‘存储器泄露’。存储器泄露可随着时间增加,并且在存储器泄露未被清理的情况下,这些可导致系统变慢、应用响应时间长以及存储器不足的错误。因此,为了有效的响应时间,有必要在使用之后清理存储器。
在大型应用/环境中,识别与存储器泄露有关的存储器分配可能是困难且耗时的。本文中,与存储器泄露或存储器问题有关的存储器分配可被称为‘存储器嫌疑’或‘有嫌疑的存储器’。用于识别存储器嫌疑的方法之一是周期性地检索存储器堆转储,随后可针对存储器嫌疑来分析该存储器堆转储。通常,这种存储器堆转储是非常巨大的,并且系统可能不能够处理这种大的存储器堆转储。在另一方法中,应用使用剖析器来描述存储器(或对象)分配(例如,每n个存储器分配)的轮廓以确定大概的存储器使用。尽管该方法识别大量对象,但是它仅在少数情况下可识别与存储器泄露有关的根本原因及对应使用情况。
在一些情形中,可识别使用运行用的巨大存储器的应用的对象。但是在大多数情况下,存储器管理不仅与识别对象或者该对象分配至的存储器位置相关,而且也与应用的使用情况相关。这可归因于如下事实:相同程序(或代码或函数)可被用在与存储器有关的不止一种使用情况/情形中。例如,在与应用的不同使用情况有关的分类项中,可利用指定用于‘分类’的程序代码。
在大多数情形中,存储器利用率或者向对象分配的存储器可具体到应用环境或应用使用情况。因此,在没有应用环境的情况下检测的任何存储器嫌疑都可提供解决存储器泄露问题的不当指导。本文的各种实施方式公开了用于检测和分析与应用相关的存储器嫌疑的系统和方法。在各种实施方式中,通过遵循系统方法来监控存储器,可基于存储器使用、应用使用情况以及应用环境的改变生成存储器趋势。尽管所描述的用于检测应用环境中的存储器嫌疑的系统和方法的方面可在任意数量的不同计算设备、环境和/或配置中实现,但是实施方式是在如下示例性设备的环境中描述的。
参考图1,示出了根据本主题的实施方式的用于检测与应用相关的存储器嫌疑的网络实施例100。网络实施例100示出为包括:系统102、诸如用户设备104-1、104-2......104-N的用户设备以及用于促进系统102与用户设备104-1、104-2......104-N之间的通信的通信网络106。在一个实施方式中,系统102促进用于在应用环境中诊断存储器嫌疑的共用平台。
虽然考虑将系统102实现为单个设备来说明本主题,但是可理解的是,系统102还可实现为各种计算系统(诸如,膝上型电脑、台式电脑、笔记本、工作站、大型机电脑、网络服务器、平板电脑、移动电话、机器人等)。
将理解,系统102可通过一个或多个用户设备104-1、104-2……104-N(在下文中,统称为用户设备104)或者驻留在用户设备104上的应用,由多个用户访问。用户设备104的实例可包括但不限于,便携式电脑、个人数字助理、手持设备以及工作站。为了运行应用会话,用户设备104可与服务器108创建对应会话。
在实施方式中,每个设备104可与服务器108创建会话用于与服务器108通信。设备104可通过通信网络106与服务器108通信。通信网络106可以是无线网络、有线网络或其组合。通信网络106可实现为诸如内联网、局域网(LAN)、广域网(WAN)、互联网等的不同类型网络中的一种。通信网络106可以是专用网络或共享网络。共享网络表示使用各种协议(例如,超文本传输协议(HTTP)、传输控制协议/互联网协议(TCP/IP)、无线应用协议(WAP)等)的不同类型的网络的联合以彼此通信。此外,网络106可包括各种网络设备,包括路由器、网桥、服务器、计算设备、存储装置等。
可如下执行存储器嫌疑的检测:周期性地监控应用的存储器并且从活跃存储器中的存储器收集输入。监控存储器促进分离有嫌疑的存储器的位置,并且也参考应用的使用情况与有嫌疑的存储器分配相关联。具体地,系统在各种存储器监控会话中监控存储器以确定包括存储器使用、垃圾收集以及与应用相关的有关使用情况的度量。系统基于确定的度量促进生成存储器趋势。在一些实施方式中,用户可使用用户设备(或客户端)104发起用于在服务器102上运行的应用的存储器监控会话。在一些其他实施方式中,可以周期性方式自动发起存储器监控。
客户端(例如,设备104)可与服务器102创建存储器监控会话。在存储器监控会话的过程中,在有系统地执行与在服务器108的JVM上运行的应用有关的各种使用情况下,在受控环境中监控应用。在存储器监控会话过程中生成的度量被收集为快照。例如,在服务器108上包括的系统可记录和存储用于存储器监控会话的度量,供由从客户端104运行存储器监控会话的用户进行分析。在一些实施方式中,度量可存储在服务器108上的存储器中。在一些实施方式中,系统102也可向客户端104发送数据供用户分析。客户端104可在被显示在设备104上的图形用户界面(GUI)中显示针对在JVM上运行的应用而记录的数据。度量或存储器快照的收集可由用户触发或者自动配置。存储器快照可根据使用情况进行分类,并且包含相关应用上下文以识别使用情况或商业事务。系统102可将存储器快照与先前快照相比较并且验证存储器快照以用于应用的存储器诊断。参考图2进一步描述用于检测存储器嫌疑的系统的实例。
图2示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的系统200的框图。系统200是图1的系统108的实例。在示例性实施方式中,系统200可体现在计算设备中。可选地,系统200可体现在服务器(例如,图1的服务器108)中。在实施方式中,系统200促进监控与应用的各种事务或使用情况相关的存储器分配,并且基于在监控存储器的过程中生成的度量的分析而进一步检测存储器嫌疑。系统200包括至少一个处理器(诸如,处理器202)、至少一个存储器(诸如,存储器204)以及用户界面206,或者以另外方式与至少一个处理器(诸如,处理器202)、至少一个存储器(诸如,存储器204)以及用户界面206通信。在实施方式中,处理器202、存储器204以及用户界面206可通过系统总线(诸如,系统总线208或类似机制)耦接。
除此之外,处理器202可包括实现与通信相关的音频和逻辑功能的电路。例如,处理器202可包括但不限于一个或多个数字信号处理器(DSP)、一个或多个微处理器、一个或多个专用计算机芯片、一个或多个现场可编程门阵列(FPGA)、一个或多个专用集成电路(ASIC)、一个或多个计算机(多个计算机)、各种模数转换器、数模转换器和/或其他支持电路。因此,处理器202也可包括编码消息和/或数据或信息的功能。除此之外,处理器202可包括时钟、运算逻辑单元(ALU)以及被配置为支持处理器202的操作的逻辑门。此外,处理器202可包括运行一个或多个软件程序的功能,该软件程序可存储在存储器204中或者以另外方式可访问处理器202。
至少一个存储器(诸如,存储器204)可存储由系统使用以实现系统的功能的若干信息或数据。例如,在示例性实施方式中,存储器204被配置为存储在应用的存储器监控会话过程中生成的度量。例如,存储器204可包括易失性存储器和/或非易失性存储器。易失性存储器可包括但不限于,易失性随机存取存储器(RAM)。另外地或可选地,非易失性存储器可包括电可擦除可编程只读存储器(EEPROM)、闪存、硬盘驱动器等。易失性存储器的一些实例包括但不限于,随机存取存储器、动态随机存取存储器、静态随机存取存储器等。非易失性存储器的一些实例包括但不限于,硬盘、磁带、光盘、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、闪存等。存储器204可被配置为存储关于监控用于存储器诊断的存储器分配、应用、指令等的信息、数据,以执行根据各种示例性实施方式的各种功能。另外地或可选地,存储器204可被配置为存储指令,当该指令由处理器202执行时,使得系统200表现地与在各种实施方式中描述的方式一样。
在实施方式中,使得系统200发起应用。例如,可使得系统200基于用户输入而发起应用。在发起应用时,可在运行环境中生成多个存储器分配请求(或对象)。所述对象被分配有相应存储器位置。下文中,向对象分配存储器可被称为‘存储器分配’或‘对象分配’。为了确定与应用相关的存储器嫌疑,执行存储器的剖析(profiling)。与应用相关的存储器的剖析或者存储器剖析包括调查和分析程序行为以确定如何优化程序的存储器使用的处理。
在实施方式中,可使得系统200执行与应用相关的存储器的剖析。在实施方式中,系统200可包括剖析代理或剖析器,其可集成至应用环境中用于执行存储器剖析。剖析器代理可由处理器配置,并且可以是充当代理的如下部件:其从应用收集所有相关度量并且将度量保存至数据储存器。剖析器代理能够在目标应用中注入二进制执行逻辑,由此跟踪从应用到运行环境的存储器分配请求。例如,对于基于java的应用,剖析器代理可使用字节码测试(BCI)技术以将其嵌入应用中。使用BCI,样本java应用可被转换以收集所需度量。
在实施方式中,使得系统200转换应用的类及二进制(classes and binaries ofthe application),用于使剖析器能够收集存储器剖析所需的相关数据(或度量)。在实施方式中,当发起目标应用并且由类装载器在运行环境中装载类时,使得系统200基于被装载的类及二进制是否满足至少一个预定标准的判定来转换类及二进制。例如,如果xi表示将要由类装载器在运行时装载的类(二进制),则随后在装载类时,剖析器代理截获每个类装载并且检查以下预定标准/条件:
xi∈Xnf,
其中,Xnf是满足预定标准的类的集合。在实施方式中,满足预定标准的类的集合可包括:将施加于存储器剖析的本机过滤器(native filters)。本文中,本机过滤器(Xnf)可定义为来自如下提及的集合中的一个或多个:
Xnf=用户兴趣的二进制/类的特定集合,和/或
常见存储器问题已知的二进制/类的特定集合,和/或
基于来自先前执行中的存储器问题的应用特定的二进制/类的特定集合。
在实施方式中,在向用于存储器剖析的java代理提供类字节之前,使得系统200向满足预定标准的存储器分配请求(或类)应用剖析器转换(PT)。剖析器转换可表示如下:
如以上表示的,应用剖析器转换包括:使得系统200利用对应唯一标识符来标记存储器分配请求。在实施方式中,基于与存储器分配请求相关的所分配的存储器的哈希码生成唯一标识符。在实施方式中,可使用如下定义的函数,通过生成且为对象标记唯一数来标记对象:
唯一数生成U=f(type,memory,time,location)
其中,
type是创建的对象的类型,
memory是对象的存储器位置,
time是以纳秒计的对象被创建/分配时的时间戳,
location是对象从源和运行时间中的位置(location of object from thesource and runtime)
对象的位置可定义为如下函数:
location=f(thread,class,classloader,method,line number)
其中,
thread是实际创建/分配对象的线程,
class是其中分配发生的类的完全合格的类名(包括包名(package name)),
classloader是用于装载完全合格的类的类装载器的类型,
method是其中对象分配发生的方法名(包括方法的签名),
line number是其中分配发生的行号。
基于以上定义,可使得系统200创建可用于标记对象的唯一数/标识符。创建函数以便基于静态及动态参数来区别对象。例如,如果以循环创建对象,则可基于哪种的类装载器被使用或者对象创建的时间戳什么样或者使用哪种线程被使用来区分具有相同行号/类的对象。
在示例性实施方式中,使得系统200生成具有与标记的存储器分配请求相关的细节的度量。例如,可以以映射表的形式获取度量,该映射表包括与标记的存储器分配相关的诸如分配请求的起源、时间戳、尺寸、类型等信息。转换下的对象被标记有关于分配的源的映射表。在任何时间,如果系统确定不再使用对象(重分配/垃圾收集),则所述对象的细节在度量(或映射表)中更新。此外,使得系统200周期性地获取存储器信息,诸如总体存储器使用、可用存储器、存储器检索所花费的时间、存储器检索所占用的CPU。
在实施方式中,使得系统200存储涉及存储器的分配/重分配的存储器信息以及涉及存储器分配/重分配的至少一种应用使用情况。在实施方式中,使得系统200周期性地自动存储存储器信息。在另一实施方式中,使得系统200基于用户输入而存储存储器信息。例如,用户可向剖析器代理发出信号以将度量保存至存储器204(或度量数据储存器)。度量可被称为存储器快照。存储器快照可包括应用存储器信息和存储器分配信息。应用存储器信息可包括但不限于:可用于运行环境的总存储器、由应用使用的存储器、由运行环境为清理存储器而做出的尝试(例如,java环境中的垃圾收集计数)、由处理器清理存储器所花费的时间(例如,java环境中的垃圾收集所花费的时间)以及存储器快照的时间戳。存储器分配信息可包括诸如存储器分配类型(结构、类等)、时间戳、尺寸以及分配起源(例如,函数、源代码等)的信息。
在实施方式中,使得系统200系统地监控存储器监控会话中的应用以检测有嫌疑的存储器。本文中,术语‘系统地监控’可指代通过迭代(反复)执行与应用相关的多种使用情况或者事务来监控应用,其中,多种使用情况是与满足预定标准的类相关的那些使用情况。在实施方式中,系统监控应用包括:访问具有特定目标使用情况的目标应用。例如,在存储器监控会话过程中,用户可周期性地访问具有特定目标使用情况的目标应用。在实施方式中,监控目标应用可从系统200的用户界面中执行。例如,用户可从系统的用户界面(或诸如图1的设备104的客户端设备)的目标应用启动监控。在另一实施方式中,系统200可自动配置为在存储器监控会话过程中,周期性地访问具有特定目标使用情况的目标应用。
在实施方式中,使得系统200在存储器监控会话的开始和结束获取存储器快照。在存储器监控会话的开始和结束获取到的这种存储器快照被称为基线快照。在存储器监控会话过程中,可针对多个迭代重复应用使用情况。在每个迭代结束时,使得系统200获取存储器快照。参考图4进一步描述在存储器监控会话过程中生成多个存储器快照的实例。在实施方式中,可应用逆转换以完全关闭监控并且恢复应用原始状态。在实施方式中,为了结束监控会话,使得系统200应用逆转换(也被称为逆剖析器转换)。逆剖析器转换PT’(xi)可如下定义:
在存储器监控会话过程中,使得系统200存储在存储器监控会话过程中生成的多个存储器快照。在示例性实施方式中,使得系统200在系统200的存储器中存储多个存储器快照。在实施方式中,多个存储器快照可存储在与系统200相关的数据储存器中,其中,数据储存器可与系统200通信地耦接。
使得系统200按照每种使用情况或商业事务将存储器快照分组。因为转换下的所有对象标记有关于分配起源的映射表,所以系统200可将存储器快照按照使用情况分组。在实施方式中,使得系统200解析运行存储器以便识别标记有唯一标识符的存储器分配。因此,分配列表可以和与存储器快照相关的其他度量填充在存储器快照中。
使得系统200执行多个快照的分析,以检测存储器嫌疑。在实施方式中,使得系统200基于基线快照与多个中间快照的比较来执行分析。可执行基线快照与多个中间快照的比较以得到对象的每个类型/类的计数、尺寸的改变。
在实施方式中,基于在监控会话过程中获取的多个存储器快照,可检测到引起存储器泄露的有问题的使用情况。在示例性实施方式中,系统200可被配置为对在存储器监控会话过程中获取的度量执行分析,并且基于总尺寸和计数提供关于前(top,顶部)N个存储器分配类型的存储器趋势。在实施方式中,可使得系统200横跨存储器快照解析度量并且生成存储器嫌疑列表。对于诸如存储器分配类型(例如,结构、类等)、时间戳、尺寸、分配起源(函数/源代码)的存储器分配信息中的每项,进行各个存储器快照之间的比较,以确定对象的每个类型/类的计数、尺寸的改变。在实施方式中,可使得系统200针对所有对象类型,生成同基线开始及结束快照相比在在总体存储器尺寸或计数方面具有净增长的图形图案。在实施方式中,可使得系统200通过考虑沿着图形的多个点,计算图形的斜率。具有最高平均正斜率值以及非负斜率的对象类型可以降序列出。如果斜率为零或负值或者具有负的净趋势的正和负值的组合,则它们不被分类为存储器嫌疑。然而,如果斜率是线性和正数的,或者组合平均净斜率是正数,则对应类型是存储器嫌疑的候选项。
在实施方式中,使得系统200突出(加亮)存储器嫌疑列表中的已知是频繁存储器嫌疑(来自先前执行中的一般运行/应用特定问题)的对象类型。在选择存储器嫌疑时,利用堆叠追踪和相关性图形显示详细的深度探讨报告。相关性图形是具有对象存储器尺寸/计数图形的叠加图形,其他存储器细节包括垃圾收集时间、可用总存储器、得到用于每种使用情况的对象类型的存储器趋势的相关视图的总共使用的存储器。由于这也示出了清理存储器所花费的时间(垃圾收集时间),所以也可显示由于存储器嫌疑影响的响应时间或CPU。
在示例性实施方式中,当定位根本原因位置(码堆叠追踪)时,应用上下文(对该原因负责的特定使用情况)时,使得系统200生成关于应用的嫌疑位置的报告。一旦固定了存储器嫌疑,则可再次监控相同使用情况以与先前快照做比较,以检查存储器问题是否得到解决。
图3示出根据示例性实施方式的用于检测与应用(例如,应用302)相关的存储器嫌疑的功能流300的示例性表示。功能流示出为包括在各种块之间的流动,各种块包括:应用302、配置数据304、度量数据储存器306、存储器嫌疑分析器308、用户界面310以及与应用相关的剖析器代理312。
本文中,应用302表示可包括多种使用情况的目标应用。例如,目标应用可以是在线订票应用。与订票应用相关的使用情况或事务可包括,例如,搜索机票、定机票、更改航班等等。
为了获取与应用302相关的存储器嫌疑,剖析器代理312附接有应用302。剖析器代理312被配置为系统地剖析与应用302相关的存储器,并且周期性地收集与应用相关的有关数据(诸如度量)。配置数据304包括关于度量的获取的输入。例如,配置数据304可包括诸如在度量中获取什么数据、在什么时间必须获取数据等的信息。在实施方式中,配置数据304可由用户提供,并且可在发起用于监控应用的存储器监控会话之前存储该配置数据。在示例性实施方式中,可使用默认自动生成标准配置。
由剖析器代理312收集的度量可存储在度量数据储存器306中。例如,度量数据储存器306可储存存储器信息和与事务相关的存储器分配信息。度量数据储存器306与存储器嫌疑分析器308耦接。在度量数据储存器306中收集的度量提供至存储器嫌疑分析器308,并且存储器嫌疑分析器308被配置为分析数据,以与为引起存储器嫌疑而负责的相关应用上下文(或使用情况或事务)一起预测与应用相关的存储器嫌疑。
基于执行的情形/事务,用户界面310被配置为示出表示用于猛增的存储器的存储器趋势的分析。此外,该分析表示与存储器泄露相关的存储器位置,用于发生存储器泄露的代码(或函数)以及与发生存储器泄露的代码相关的特定使用情况。用户界面310也可使用户能够提供关于度量的获取的输入。例如,用户可对在特定时间点获取度量或存储器快照感兴趣,并且因此可在用户界面提供输入。在实施方式中,用户可从用户界面310发起存储器监控会话,用于确定存储器嫌疑。在存储器监控会话过程中,可获取度量。参考图4进一步描述存储器监控会话的实例。
图4示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的存储器监控会话的示例性表示400。根据本文中的公开内容,存储器监控会话可被定义为系统执行与应用相关的多个事务以检测与应用相关的存储器嫌疑的会话(session)。
在实施方式中,发起应用并且获取与应用相关的度量。在实施方式中,通过以下表示为410的序列,可获取与应用相关的事务的第一基线存储器快照。参考图4中的序列410,在发起应用时获取度量(或表示为402的存储器快照)。在发起应用时获取的该度量402可被称为基线存储器快照。发起监控会话,并且执行第一事务402。在实施方式中,第一事务404可以是登入事务。在执行登入事务404时,获取与应用相关的度量(或存储器快照)406。执行第二事务,该第二事务为退出事务(例如,退出事务408)并且获取与应用相关的度量412,。基于度量402、406以及412的比较来确定与度量相关的各参数的增加或减少。在实施方式中,确定的尺寸和其他参数的改变可以以图形形式呈现(例如,呈现在用户界面上)。例如,图形可显示为示出在登入或退出事务之后的存储器的增加或减少。在实施方式中,可多次重复(用于多次迭代)登入、获取度量、退出和再次获取度量的序列410。参考序列450进一步描述执行涉及多次执行事务并获取度量的多次迭代的实例。
参考图4的序列450,发起应用并且获取与应用相关的度量452(或基线快照452)。发起存储器监控会话,并且执行第一事务454。在实施方式中,第一事务可为登入事务,例如,登入事务454。在执行登入事务454时,获取与应用相关的度量(或存储器快照)456。执行例如事务458的事务,并且在执行该事务时获取与应用相关的度量460。事务可与应用的使用情况相关。例如,在在线预订应用中,事务458可以是票务搜索事务。如图4所示,执行事务多次,并且在每次执行之后,生成存储器快照。例如,多次执行事务458,并且在每次执行度量之后,获取诸如存储器快照460、462以及464的度量。在存储器监控会话结束时,执行第二事务,并且获取与应用相关的度量468,该第二事务为登出事务(例如,退出事务466)。
在实施方式中,基于在序列410及序列450中获取的快照,可检测引起存储器泄露的有问题的使用情况。在示例性实施方式中,如参考图2已经讨论的,系统可被配置为执行对存储器会话过程中获取的度量的分析,并且提供存储器嫌疑。在实施方式中,可分析在执行序列410和450过程中收集的度量以检测存储器嫌疑。参考图5进一步描述存储器嫌疑的诊断的示例性流程图。
图5示出根据示例性实施方式的用于检测与应用相关的存储器嫌疑的方法500的流程图。可在计算机可执行指令的一般上下文中描述方法500。通常,计算机可执行指令可包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、分量、数据结构、过程、模块、函数等。还可在分布式计算环境中实践该方法500,在分布式计算环境中,由经由通信网络链接的远程处理设备执行功能。在分布式计算环境中,计算机可执行指令可位于包括存储器存储设备的本地和远程计算机存储介质中。
描述方法500的顺序并非旨在理解为具有限制性,并且任意数量的描述方法的方框可以按照任何顺序组合来实现方法500或可选方法。此外,在不背离本文描述的主题的精神和范围的情况下,可以从方法500中删除各个方框。而且,该方法500可以在任何合适的硬件、软件、固件或其组合中实现。然而,为了便于说明,在以下描述的实施方式中,方法500可被视为在上文中描述的系统102(图1)和/或系统200(图2)中实现。
在502中,系统地执行与应用相关的多个事务。在实施方式中,执行多个事务引起度量的生成。所述度量包括应用存储器信息和与事务相关的存储器分配信息。在504中,周期性地获取在系统地执行多个事务时生成的度量。参考图4说明系统地执行多个事务并且周期性地获取度量的实例。
在506中,基于周期性获取的度量,从多个事务中检测由于有嫌疑的存储器分配而受到影响的一组事务。在实施方式中,度量的存储器分配信息促进识别受到影响的该组事务。参考图6A和图6B进一步描述用于检测与应用相关的存储器嫌疑的方法的详细地流程图。
图6A和图6B示出根据另一示例性实施方式的用于检测与应用相关的存储器嫌疑的方法600的流程图。
在602中,发起应用。应用可由用户经由用于访问应用的设备的用户界面发起。在604中,转换满足至少一个预定标准的与应用相关的类和/或二进制。在实施方式中,预定标准可包括识别与常见存储器问题的已知的类、与来自先前执行中的存储器问题相关的类以及与用户兴趣相关的类中的至少一个相关的存储器分配。在实施方式中,预定标准可设置为识别应用的可与有嫌疑的存储器分配相关的那些事务。
在606中,创建用于检测存储器嫌疑的存储器监控会话。参考图4详细描述用于收集度量的存储器监控会话的实例。在存储器监控会话过程中,迭代执行与应用相关的至少一个事务,并且在每次执行之后可获取与存储器相关的度量。这种度量被称为存储器快照。例如,在608中,在监控会话的开始执行与应用相关的第一事务。在610中,利用对应唯一标识符标记对应于第一事务的存储器分配请求。在612中,获取与第一事务相关的度量。在存储器监控会话的开始获取的这种度量或存储器快照可被称为基于存储器快照的。在614中,多次执行与应用相关的多个事务。在616中,利用对应唯一标识符标记对应于多个事务的存储器分配请求,在执行多个事务中的每个事务之后获取度量。
在620中,执行第二事务以停止存储器监控会话。在622中,利用对应唯一标识符标记对应于第二事务的存储器分配请求。在624中,获取与第二事务相关的度量。在626中,填入在执行多个事务时生成的度量。在实施方式中,度量可填充在其中该度量与多个事务中的对应事务相关的表中。在实施方式中,度量可基于对应于事务的存储器分配请求标记所利用的唯一标识符来与对应事务相关联。在628中,可基于周期性获取的度量和对应事务的比较,执行分析以确定与有嫌疑的存储器分配相关的存储器趋势。参考图2描述可执行的各种示例性分析。
书面描述描述了本文的主题以使得本领域任意技术人员能够做出并使用实施方式。主题实施方式的范围由权利要求限定,并且可包括本领域技术人员想到的其它修改。如果这种其它修改具有与权利要求的字面语言没有不同的相似元件,或者如果它们包括与权利要求的字面语言具有无实质不同的等同元件,则这种其它修改旨在处于权利要求范围内。
本公开的各种实施方式提供一种用于存储器嫌疑检测的方法和系统。存储器嫌疑是嫌疑有问题的和/或与错误相关的存储器位置。例如,由于有嫌疑的存储器分配,系统可面临存储器不足的错误或者响应时间慢。在应用/服务器/第三方部件等的迁移/更新过程中,可观察这种问题。在大应用/环境中,识别这种存储器是困难且耗时的。本公开的各种实施方式提供系统的方法以监控存储器,并且基于存储器使用、应用使用情况以及应用环境的改变生成存储器趋势。例如,所公开的系统目标为周期性地监控应用的存储器并且收集来自活跃存储器的中的存储器的输入,由此避免大转储文件的处理。系统不仅目标为分离有嫌疑的存储器分配的位置而且也参考应用的使用情况将其关联。系统也被配置为基于存储器使用、垃圾收集以及相关应用使用情况生成存储器趋势。
在实施方式中,使得系统基于在执行各种使用情况时观察到的存储器趋势来监控用于存储器嫌疑的应用以及受到影响的使用情况或商业事务。在系统执行各种使用情况的控制环境中监控应用,并且度量被收集作为用户触发或自动配置的快照。快照可被分类为每种使用情况并且包含相关应用环境以识别使用情况或商业事务。在从趋势中识别出的嫌疑被决定之后,系统进一步促进与先前快照的比较和验证。在本文公开的系统和方法中,只分析存储器快照而不是完整的堆转储。相比较完整的堆转储,存储器快照的尺寸非常小,并且因此便于分析。此外,系统促进识别码水平的对象的根本原因以及应用环境,其也涉及找到受影响的使用情况或商业事务。因此,系统在识别存储器误差的根本原因时是有效的。
然而,应理解,保护范围延伸至如下的程序以及其中具有消息的非暂存性计算机可读装置;当程序在服务器或移动设备或任意合适的可编程设备上运行时,这种计算机可读存储装置包含用于执行该方法的一个或多个步骤的程序代码装置。硬件设备可以是可编程的任何类型的设备,包括例如,如同服务器或个人计算机等或者其任意组合的任意类型的计算机。设备也可包括可以为例如,硬件装置(如同例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)或硬件装置和软件装置的组合(例如,ASIC与FPGA、或者至少一个微处理器与具有位于其中的软件模块的至少一个存储器))的装置。因此,装置可包括硬件装置和软件装置。本文描述的方法实施方式可在硬件和软件中实现。设备也可包括软件装置。可选地,实施方式可例如,使用多个CPU在不同硬件识别上实现。
本文中的实施方式可包括硬件和软件元件。在软件中实现的实施方式包括但不限于固件、常驻软件、微代码等。通过本文描述的各种模块执行的功能可在其他模块或其他模块的组合中实现。为了说明的目的,计算机可用或计算机可读介质可以是可包含、存储、通信、传播或传输用于使用的程序或者与指令执行系统、装置或设备连接的任意装置。
具体执行方式及实施方式的以上说明将充分揭示本文中的执行方式及实施方式的一般实质,使得在不背离本公开的一般构思的情况下,通过应用目前知识,可针对各种应用容易地修改和/或调整这些具体实施方式,这些修改和调整应该处于公开的实施方式的等同物的含义和范围中,而且旨在在公开的实施方式的等同物的含义和范围中进行理解。应理解,本文采用的措辞或术语是为了描述的目的,而不是限制目的。尽管已经以优选实施方式的形式描述了本文的实施方式,然而,本领域技术人员应当认识到,可在本文描述的实施方式的精神和范围内,实践对本文的实施方式进行修改。
已参考各种实施方式呈现了前述描述。本申请所属领域和技术中的普通技术人员将理解:在不有意偏离原理、精神和范围的情况下,可实践描述的操作的结构和方法的修改和改变。
在另一固件和/或软件执行方式中,函数可存储为非暂时性计算机可读介质上的一个或多个指令或代码。实例包括编码有数据结构的计算机可读介质以及编码有计算机程序的计算机可读介质。计算机可读介质可采取制造商物品的形式。计算机可读介质包括物理计算机存储介质。存储介质可以是可由计算机访问的任何可用介质。例如而非限制性地,这种计算机可读介质可包括可用于以指令或数据结构的形式存储期望的程序代码并且可由计算机访问的RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备或者任何其他介质;如本文使用的磁盘和圆盘包括光碟(CD)、激光盘、光盘、数字通用光盘(DVD)、软盘以及蓝光光盘,其中,圆盘通常磁性再现数据,同时,圆盘使用激光光学再现数据。还应在计算机可读介质的范围内包括以上内容的组合。
Claims (8)
1.一种用于存储器嫌疑检测的计算机实现的方法,包括:
确定应用的一个或多个满足至少一个预定标准的类和二进制,所述至少一个预定标准设定用于识别与有嫌疑的存储器分配相关联的多种使用情况,其中,所述应用被初始化以在运行环境中生成多个存储器分配请求,其中,所述至少一个预定标准包括识别与以下项相关联的存储器分配的标准:常见存储器问题已知的一个或多个类、与来自先前执行中的存储器问题相关的类以及与用户兴趣相关的类;
将剖析器转换应用于满足所述预定标准的类和二进制,其中,所述剖析器转换包括:
利用对应唯一标识符生成并标记所述多个存储器分配请求中的每一个,其中,所述唯一标识符包括:对应分配的存储器位置的哈希码、响应于所述存储器分配请求而创建的对象的类型,创建所述对象的时间戳以及所述对象从源和运行时间中的位置,被定义为线程、类、类加载器、方法和行号中的至少一个的函数的所述对象的位置;以及
为所标记的多个存储器分配请求生成映射表,所述映射表包括以下信息:与所标记的多个存储器分配请求相关的分配请求的起源、时间戳、尺寸和类型;
通过在存储器监控会话期间周期性地访问具有特定目标使用情况的所述应用来系统地执行所述应用的所述多种使用情况以生成度量;
周期性地获取在系统地执行多种使用情况时生成的度量作为映射表中的存储器快照,在执行所述多种使用情况中的一种使用情况而生成的度量包括:与所述多种使用情况中的一种使用情况相关的存储器分配信息和应用存储器信息,其中,所述存储器分配信息包括存储器分配类型、时间戳、尺寸和存储器分配的起源,并且,其中所述应用存储器信息包括与以下相关的信息:用于所述运行环境的总存储器、所述应用使用的存储器、由运行环境为清理存储器而做出的尝试次数、清理存储器花费的时间和获取所述度量的时间戳;
将对应于所述多种使用情况中的每个使用情况的度量与所述对应唯一标识符相关联;
通过应用逆剖析器转换来终止所述存储器监视会话,其中,所述逆剖析器转换包括去除所述存储器分配请求的标记、清理所述映射表以及停止重分配记录;
通过在所述存储器快照之间进行比较来对周期性地获取的所述多种使用情况的每一种使用情况的度量进行分析,以确定存储器分配的每个类型或类的计数和尺寸的改变;以及
基于所述存储器分配的每个类型或类的计数和尺寸的改变,从所述多种使用情况中识别由于所述有嫌疑的存储器分配而受影响的一组使用情况。
2.根据权利要求1所述的方法,其中,系统地执行所述多种使用情况包括:在存储器监控会话期间,在所述运行环境中多次迭代地执行所述多种使用情况中的至少一种使用情况,并且其中,迭代地执行所述至少一种使用情况包括生成与所述至少一种使用情况对应的所述多个存储器分配请求。
3.根据权利要求2所述的方法,其中,周期性获取与在所述存储器监控会话期间迭代执行所述至少一种使用情况相关的所述度量包括:至少在所述存储器监控会话的开始和结束时以及在所述存储器监控会话期间的至少一个时间获取所述度量。
4.根据权利要求1所述的方法,其中,识别由于所述有嫌疑的存储器分配而受影响的所述一组使用情况包括:
填充关于执行所述多种使用情况而生成的所述度量,其中,填充包括按照所述多种使用情况中的对应使用情况将所述度量相关;以及
基于周期性获取的在迭代执行所述至少一种使用情况期间生成的所述度量的比较,来识别与所述有嫌疑的存储器分配相关的存储器趋势。
5.一种用于存储器嫌疑检测的计算机实现的系统(200),包括:
至少一个存储器(204);以及
至少一个处理器(202),所述至少一个存储器(204)耦接至所述至少一个处理器(202),其中,所述至少一个处理器(202)能够执行在所述至少一个存储器中储存的编程指令以:
确定应用的一个或多个满足至少一个预定标准的类和二进制,所述至少一个预定标准设定用于识别与有嫌疑的存储器分配相关联的多种使用情况,其中,所述应用被初始化以在运行环境中生成多个存储器分配请求,其中,所述至少一个预定标准包括识别与以下项相关联的存储器分配的标准:常见存储器问题已知的一个或多个类、与来自先前执行中的存储器问题相关的类以及与用户兴趣相关的类;
将剖析器转换应用于满足所述预定标准的类和二进制,其中,所述剖析器转换包括:
利用对应唯一标识符生成并标记所述多个存储器分配请求中的每一个,其中,所述唯一标识符包括:对应分配的存储器位置的哈希码、响应于所述存储器分配请求而创建的对象的类型,创建所述对象的时间戳以及所述对象从源和运行时间中的位置,被定义为线程、类、类加载器、方法和行号中的至少一个的函数的所述对象的位置;以及
为所标记的多个存储器分配请求生成映射表,所述映射表包括以下信息:与所标记的多个存储器分配请求相关的分配请求的起源、时间戳、尺寸和类型;
通过在存储器监控会话期间周期性地访问具有特定目标使用情况的所述应用来系统地执行所述应用的所述多种使用情况以生成度量;
周期性地获取在系统地执行多种使用情况时生成的度量作为映射表中的存储器快照,在执行所述多种使用情况中的一种使用情况而生成的度量包括:与所述多种使用情况中的一种使用情况相关的存储器分配信息和应用存储器信息,其中,所述存储器分配信息包括存储器分配类型、时间戳、尺寸和存储器分配的起源,并且,其中所述应用存储器信息包括与以下相关的信息:用于所述运行环境的总存储器、所述应用使用的存储器、由运行环境为清理存储器而做出的尝试次数、清理存储器花费的时间和获取所述度量的时间戳;
将对应于所述多种使用情况中的每个使用情况的度量与所述对应唯一标识符相关联;
通过应用逆剖析器转换来终止所述存储器监视会话,其中,所述逆剖析器转换包括去除所述存储器分配请求的标记、清理所述映射表以及停止重分配记录;
通过在所述存储器快照之间进行比较来对周期性地获取的所述多种使用情况的每一种使用情况的度量进行分析,以确定存储器分配的每个类型或类的计数和尺寸的改变;以及
基于所述存储器分配的每个类型或类的计数和尺寸的改变,从所述多种使用情况中识别由于所述有嫌疑的存储器分配而受影响的一组使用情况。
6.根据权利要求5所述的系统,其中,为了系统地执行所述多种使用情况,所述至少一个处理器(202)进一步能够执行编程指令以:在所述存储器监控会话期间,在所述运行环境中多次迭代地执行所述多种使用情况中的至少一种使用情况,并且其中,为了迭代地执行所述至少一种使用情况,所述至少一个处理器进一步能够执行编程指令以生成与所述至少一种使用情况对应的所述多个存储器分配请求。
7.根据权利要求6所述的系统,其中,为了周期性获取与在所述存储器监控会话期间迭代执行所述至少一种使用情况相关的所述度量,所述至少一个处理器(202)进一步能够执行所述编程指令,以至少在所述存储器监控会话的开始和结束时以及在所述存储器监控会话期间的至少一个时间获取所述度量。
8.根据权利要求5所述的系统,其中,为了识别由于所述有嫌疑的存储器分配而受影响的所述一组使用情况,所述至少一个处理器进一步能够执行所述编程指令以:
填充关于执行所述多种使用情况而生成的所述度量,其中,填充包括按照所述多种使用情况中的对应使用情况将所述度量相关;以及
基于周期性获取的在迭代执行所述至少一种使用情况期间生成的所述度量的比较,来识别与所述有嫌疑的存储器分配相关的存储器趋势。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN4721/MUM/2015 | 2015-12-16 | ||
IN4721MU2015 | 2015-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106886474A CN106886474A (zh) | 2017-06-23 |
CN106886474B true CN106886474B (zh) | 2020-12-08 |
Family
ID=59064356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610161984.0A Active CN106886474B (zh) | 2015-12-16 | 2016-03-21 | 用于存储器嫌疑检测的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11112993B2 (zh) |
EP (1) | EP3200080B1 (zh) |
JP (1) | JP6449804B2 (zh) |
CN (1) | CN106886474B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10572245B1 (en) * | 2016-08-30 | 2020-02-25 | Amazon Technologies, Inc. | Identifying versions of running programs using signatures derived from object files |
US11797877B2 (en) * | 2017-08-24 | 2023-10-24 | Accenture Global Solutions Limited | Automated self-healing of a computing process |
US11531531B1 (en) | 2018-03-08 | 2022-12-20 | Amazon Technologies, Inc. | Non-disruptive introduction of live update functionality into long-running applications |
US11256590B1 (en) | 2018-10-05 | 2022-02-22 | Cisco Technology, Inc. | Agent profiler to monitor activities and performance of software agents |
US11080125B1 (en) | 2020-03-19 | 2021-08-03 | Oracle International Corporation | Identifying and clustering call stacks across multiple memory dumps with out-of-memory errors |
CN116069532A (zh) * | 2021-10-29 | 2023-05-05 | 戴尔产品有限公司 | 使用对异常内存使用模式的基于规则的检测来识别和补救内存泄漏 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7627671B1 (en) * | 2004-05-22 | 2009-12-01 | ClearApp, Inc. | Monitoring and performance management of component-based applications |
US7434206B2 (en) * | 2005-03-10 | 2008-10-07 | Hewlett-Packard Development Company, L.P. | Identifying memory leaks in computer systems |
US8229979B2 (en) * | 2006-04-28 | 2012-07-24 | Sap Ag | Method and system for inspecting memory leaks |
US7926043B2 (en) * | 2006-06-20 | 2011-04-12 | Microsoft Corporation | Data structure path profiling |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
CN101615143B (zh) * | 2008-06-27 | 2013-04-17 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
WO2010093996A1 (en) * | 2009-02-13 | 2010-08-19 | Peter Anthony Crosby | Memory utilization analysis |
US8850403B2 (en) * | 2009-12-04 | 2014-09-30 | Sap Ag | Profiling data snapshots for software profilers |
US8938729B2 (en) * | 2010-10-12 | 2015-01-20 | Ca, Inc. | Two pass automated application instrumentation |
EP2557503B1 (en) * | 2011-07-28 | 2020-04-01 | Tata Consultancy Services Ltd. | Application performance measurement and reporting |
US8881107B2 (en) * | 2011-08-24 | 2014-11-04 | Microsoft Corporation | Automatic memory leak detection |
US8966198B1 (en) * | 2011-09-01 | 2015-02-24 | Google Inc. | Providing snapshots of virtual storage devices |
US8626993B2 (en) * | 2011-11-18 | 2014-01-07 | Apple Inc. | Method for tracking memory usages of a data processing system |
JP5572619B2 (ja) * | 2011-12-02 | 2014-08-13 | 株式会社日立製作所 | トレース情報の数を算出する計算機、トレース情報の数を算出する方法及びトレース情報の数を算出させるプログラム |
JP5883300B2 (ja) * | 2012-02-02 | 2016-03-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | オブジェクトを特定するためのハッシュコードを生成するための方法、プログラム及びシステム |
CN103294580B (zh) * | 2012-02-02 | 2017-08-08 | 塔塔咨询服务有限公司 | 实时性能监控 |
US20130227402A1 (en) * | 2012-02-28 | 2013-08-29 | University Of Rochester | System, apparatus, method, and applications for measuring and reporting on the process of composing written material |
US9311014B2 (en) * | 2012-11-29 | 2016-04-12 | Infinidat Ltd. | Storage system and methods of mapping addresses of snapshot families |
IN2013MU03382A (zh) * | 2013-10-25 | 2015-07-17 | Tata Consultancy Services Ltd | |
US9535831B2 (en) * | 2014-01-10 | 2017-01-03 | Advanced Micro Devices, Inc. | Page migration in a 3D stacked hybrid memory |
IN2014MU00158A (zh) * | 2014-01-16 | 2015-08-28 | Tata Consultancy Services Ltd | |
IN2014MU00819A (zh) * | 2014-03-11 | 2015-09-25 | Tata Consultancy Services Ltd | |
US9798644B2 (en) * | 2014-05-15 | 2017-10-24 | Ca, Inc. | Monitoring system performance with pattern event detection |
US10467036B2 (en) * | 2014-09-30 | 2019-11-05 | International Business Machines Corporation | Dynamic metering adjustment for service management of computing platform |
US10909146B2 (en) * | 2015-12-07 | 2021-02-02 | Microsoft Technology Licensing, Llc | Providing automated hashtag suggestions to categorize communication |
-
2016
- 2016-03-10 EP EP16159595.4A patent/EP3200080B1/en active Active
- 2016-03-11 US US15/068,138 patent/US11112993B2/en active Active
- 2016-03-18 JP JP2016056027A patent/JP6449804B2/ja active Active
- 2016-03-21 CN CN201610161984.0A patent/CN106886474B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP3200080B1 (en) | 2021-12-22 |
US20170177272A1 (en) | 2017-06-22 |
JP6449804B2 (ja) | 2019-01-09 |
JP2017111785A (ja) | 2017-06-22 |
US11112993B2 (en) | 2021-09-07 |
CN106886474A (zh) | 2017-06-23 |
EP3200080A1 (en) | 2017-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106886474B (zh) | 用于存储器嫌疑检测的方法和系统 | |
US11023355B2 (en) | Dynamic tracing using ranking and rating | |
Ding et al. | Log2: A {Cost-Aware} logging mechanism for performance diagnosis | |
US8522216B2 (en) | Memory leak detection | |
Jung et al. | Automated memory leak detection for production use | |
US8694574B2 (en) | Optimized settings in a configuration database with boundaries | |
Beyer et al. | Benchmarking and resource measurement | |
US9098625B2 (en) | Viral trace | |
US8504878B2 (en) | Statistical analysis of heap dynamics for memory leak investigations | |
US9026646B2 (en) | Methods and apparatus for remediating policy test failures, including correlating changes to remediation processes | |
Safi et al. | Detecting event anomalies in event-based systems | |
US20130073704A1 (en) | Methods and apparatus for remediating policy test failures, including promoting changes for compliance review | |
Pagani et al. | Introducing the temporal dimension to memory forensics | |
US9317416B2 (en) | Merging automated testing reports | |
Jayathilaka et al. | Response time service level agreements for cloud-hosted web applications | |
Ates et al. | An automated, cross-layer instrumentation framework for diagnosing performance problems in distributed applications | |
US8255435B2 (en) | Detecting memory management anti-patterns | |
Martino et al. | Logdiver: A tool for measuring resilience of extreme-scale systems and applications | |
Šor et al. | Memory leak detection in Plumbr | |
Toslali et al. | Automating instrumentation choices for performance problems in distributed applications with VAIF | |
Amvrosiadis et al. | Getting back up: Understanding how enterprise data backups fail | |
Kim et al. | Perfguard: binary-centric application performance monitoring in production environments | |
Sârbu et al. | Profiling the operational behavior of OS device drivers | |
KR101830936B1 (ko) | 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 시스템 | |
Mitropoulos et al. | Measuring the occurrence of security-related bugs through software evolution |
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 |