CN102722445B - 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 - Google Patents
一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 Download PDFInfo
- Publication number
- CN102722445B CN102722445B CN201210185142.0A CN201210185142A CN102722445B CN 102722445 B CN102722445 B CN 102722445B CN 201210185142 A CN201210185142 A CN 201210185142A CN 102722445 B CN102722445 B CN 102722445B
- Authority
- CN
- China
- Prior art keywords
- internal memory
- garbage collector
- memory garbage
- stage
- record
- 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
Abstract
本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,属于编译器软件和运行时系统技术领域,包括内存垃圾收集器完成当前的内存垃圾收集任务后,在阶段记录表中新增1个阶段记录、判断内存垃圾收集器程序是否申请创建了新的对象、判断内存垃圾收集器是否移动了已有对象以及判断内存垃圾收集器是否释放了已有对象等步骤。本发明在内存垃圾收集器中建立一种针对每个对象生存周期和生存状态的阶段式跟踪记录机制,这种方法和机制目前不存在于任何内存垃圾收集器中;且所记录的对象状态信息充分全面,阶段式跟踪记录方法对程序运行效率的影响较小;对内存的占用和消耗较低。
Description
技术领域
本发明涉及一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,属于编译器软件和运行时系统技术领域。
背景技术
内存垃圾收集器(Garbage Collector)是Java虚拟机、C#虚拟机中管理对象内存空间的关键模块。对用户而言,使用Java或者C#等语言编程时,由于内存垃圾收集器的存在,只需在程序中申请对象空间,而对象的管理和空间释放,都由内存垃圾收集器自动完成,从而极大的提高程序的开发效率和运行可靠性。但由于内存垃圾收集器对内存对象的机械式管理,使得Java或者C#程序中的部分对象长期占用内存而得不到释放,从而影响内存的整体使用效率。因此,在虚拟机的内存垃圾收集器中建立一种针对每个对象生存周期和生存状态的监控记录机制,可以寻找和定位那些长期占用内存而不释放的对象,并针对这些对象对程序进行优化,对于提高虚拟机的运行效率,具有重要的意义。
发明内容
针对现有技术中存在的问题,本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,对程序运行过程中申请的每一个对象的生存周期和生存状态进行阶段式跟踪记录,根据记录结果,寻找和定位那些长期占用内存而不释放的对象。将这些信息提供给程序员或者运行时系统后,针对这些对象对程序进行优化,对于提高虚拟机的运行效率,具有重要的意义。
本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,包括以下几个步骤:
步骤一:内存垃圾收集器完成当前的内存垃圾收集任务后,在阶段记录表中新增1个阶段记录;
步骤二:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器程序是否申请创建了新的对象,如果是,为每个新增对象Ox在阶段记录表的当前阶段记录中增加一个新项为“对象Ox:新申请”,如果不是,进入步骤三;
步骤三:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否移动了已有对象,如果是,为每个被移动对象Oy在阶段记录表的当前阶段记录中增加一个新项为“对象Oy:移动”,如果不是,进入步骤四;
步骤四:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否释放了已有对象,如果是,为每个被释放对象Oz在阶段记录表的当前阶段记录中增加一个新项为“对象Oz:释放”,如果不是则结束。
本发明的优点在于:
(1)本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,在内存垃圾收集器中建立一种针对每个对象生存周期和生存状态的阶段式跟踪记录机制,这种方法和机制目前不存在于任何内存垃圾收集器中;
(2)本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法所记录的对象状态信息充分全面;
(3)本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,这种阶段式跟踪记录方法对程序运行效率的影响较小;
(4)本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法对内存的占用和消耗较低。
附图说明
图1.本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法的流程图;
图2.本发明中阶段式跟踪记录表的结构示意图
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
本发明提出一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,如图1所示,包括以下几个步骤:
步骤一:内存垃圾收集器完成当前的内存垃圾收集任务后,在阶段记录表中新增1个阶段记录。内存垃圾收集器每完成一次当前的内存垃圾收集任务,便会在阶段记录表中增加一个阶段记录,如图2所示。例如,内存垃圾收集器第1次完成内存垃圾收集任务后,将产生图2中“第1阶段记录”,第n次完成后,将产生图2中“第n阶段记录”,直至程序运行结束。每个阶段分别记录当前内存垃圾收集器完成后,对象状态的改变。例如,“第1阶段记录”记录了当前内存垃圾收集器完成后,新申请创建了对象A1(对应“对象A1:新申请”项),移动了对象A2(对应“对象A2:移动”项),释放了对象Ax(对应“对象Ax:释放”)等内容。根据Java程序或者C语言程序的运行特点,对象状态的改变呈周期性,这使得在开始阶段或其中某一些阶段的记录项较多,而紧随其后的阶段记录项较少。因此,本发明采用的对象阶段式跟踪记录方法,将具有较小的平均程序负载。
步骤二:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器程序是否申请创建了新的对象,如果是,为每个新增对象Ox在阶段记录表的当前阶段记录中增加一个新项:“对象Ox:新申请”,如果不是,进入步骤三。其中Ox表示当前新增对象,可以是这个对象的地址,或者其它能够唯一代表该对象的符号或数据。
步骤三:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否移动了已有对象,如果是,为每个被移动对象Oy在阶段记录表的当前阶段记录中增加一个新项:“对象Oy:移动”,如果不是,进入步骤四。其中Oy表示当前被移动对象,可以是这个对象的地址,或者其它能够唯一代表该对象的符号或数据。
步骤四:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否释放了已有对象,如果是,为每个被释放对象Oz在阶段记录表的当前阶段记录中增加一个新项:“对象Oz:释放”,如果不是则结束。其中Oz表示当前被释放对象,可以是这个对象的地址,或者其它能够唯一代表该对象的符号或数据。
Claims (1)
1.一种内存垃圾收集器中对象状态的阶段式跟踪记录方法,其特征在于:包括以下几个步骤:
步骤一:内存垃圾收集器完成当前的内存垃圾收集任务后,在阶段记录表中新增1个阶段记录;每个阶段分别记录当前内存垃圾收集器完成后,对象状态的改变;
步骤二:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器程序是否申请创建了新的对象,如果是,为每个新增对象Ox在阶段记录表的当前阶段记录中增加一个新项为“对象Ox:新申请”,如果不是,进入步骤三;Ox表示当前新增对象;
步骤三:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否移动了已有对象,如果是,为每个被移动对象Oy在阶段记录表的当前阶段记录中增加一个新项为“对象Oy:移动”,如果不是,进入步骤四;Oy表示当前被移动对象;
步骤四:判断从上一次内存垃圾收集器执行完内存垃圾收集任务到本次执行完内存垃圾收集任务的过程中,内存垃圾收集器是否释放了已有对象,如果是,为每个被释放对象Oz在阶段记录表的当前阶段记录中增加一个新项为“对象Oz:释放”,如果不是则结束;Oz表示当前被释放对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210185142.0A CN102722445B (zh) | 2012-06-06 | 2012-06-06 | 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210185142.0A CN102722445B (zh) | 2012-06-06 | 2012-06-06 | 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722445A CN102722445A (zh) | 2012-10-10 |
CN102722445B true CN102722445B (zh) | 2015-03-25 |
Family
ID=46948219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210185142.0A Active CN102722445B (zh) | 2012-06-06 | 2012-06-06 | 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722445B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218303B (zh) * | 2013-03-27 | 2016-08-10 | 北京航空航天大学 | 基于地址链的内存垃圾收集器中对象状态的跟踪记录方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236603A (zh) * | 2010-04-29 | 2011-11-09 | 国际商业机器公司 | 虚拟化环境中垃圾回收的方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010075401A2 (en) * | 2008-12-22 | 2010-07-01 | Google Inc. | Asynchronous distributed garbage collection for replicated storage clusters |
US9858155B2 (en) * | 2010-11-16 | 2018-01-02 | Actifio, Inc. | System and method for managing data with service level agreements that may specify non-uniform copying of data |
-
2012
- 2012-06-06 CN CN201210185142.0A patent/CN102722445B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236603A (zh) * | 2010-04-29 | 2011-11-09 | 国际商业机器公司 | 虚拟化环境中垃圾回收的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102722445A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102681857B (zh) | 一种实现车载软件系统修复或升级的方法、装置 | |
CN101944114A (zh) | 内存数据库和物理数据库间的数据同步方法 | |
CN102955560B (zh) | 一种应用程序处理方法和装置 | |
CN102104496B (zh) | 一种云计算环境下中间数据的容错性优化方法 | |
CN102722447B (zh) | 一种内存垃圾收集器中对象状态的增量式跟踪记录方法 | |
CN102722432B (zh) | 追踪内存访问的方法和装置 | |
WO2007011422A3 (en) | System and method for deterministic garbage collection in a virtual machine environment | |
CN111106620A (zh) | 基于区块链的电动汽车充电分布式管理方案 | |
CN103220180A (zh) | 一种OpenStack云平台异常的处理方法 | |
CN102722415A (zh) | 基于堆栈体系结构Java SoC系统的垃圾收集方法 | |
CN101404027A (zh) | 一种文件管理方法、系统及设备 | |
CN102722445B (zh) | 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法 | |
CN112886922A (zh) | 一种光伏电站损失电量的计算方法、装置及存储介质 | |
CN102736594A (zh) | 一种智能配电终端统一平台模块化设计方法 | |
CN101604286A (zh) | 一种关键字驱动表格生成方法 | |
CN103914288B (zh) | 判断控件状态的方法 | |
CN102270134B (zh) | 一种Java卡中垃圾回收的方法及装置 | |
CN102752374B (zh) | 一种用电能效数据的储存访问系统及方法 | |
CN102023896A (zh) | 基于Java虚拟机的并发垃圾收集器的调度器 | |
CN100456238C (zh) | 实现分布式对象持久化的方法、装置及编译单元 | |
CN103645060A (zh) | 基于状态监控系统的风力发电机组突发故障识别诊断方法 | |
CN204694342U (zh) | 一种风力发电机组异常振动的预警装置及系统 | |
CN107506276A (zh) | 一种实现批量收集Oracle AWR报告的方法 | |
CN105740069A (zh) | 一种多级数据转化任务的自动调度方法 | |
CN110532597B (zh) | 基于压力轨迹预测和时间节点的空压机组调配系统及方法 |
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 |