IP Library Granted Patent US 9,003,233
Granted Patent B2
US 9,003,233 · App. 13/732,197 · Granted Apr 7, 2015

Memory leak detection

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,003,233
App. No.
13/732,197
Granted
Apr 7, 2015
Kind
B2
Abstract

In accordance with aspects of the disclosure, systems and methods are provided for monitoring one or more classes for detecting suspected memory leaks in a production environment. The systems and methods may include identifying which of the one or more classes hold at least one static or non-static field of collection or array type, accessing the one or more classes that hold the at least one static or non-static fields of collection or array type, and tracking a size for each field of each class by periodically sampling the size of each field over an interval, processing the size data for each field of each class, and detecting suspected memory leaks of each class by identifying which of the one or more fields of each class exhibits suspect behavior in the size over the interval.

Claims (58)

1. A system including instructions stored on a non-transitory computer readable storage medium and executable by at least one processor, the system comprising:

a collection sizes tracker configured to cause the at least one processor to monitor one or more containing classes for detecting suspected memory leaks in a production environment, the collection sizes tracker including:

an instrumentation manager configured to identify which of the one or more containing classes hold at least one static or non-static field of collection or array type,

a polling mechanism configured to access the one or more containing classes that hold the at least one static or non-static fields of collection or array type, and track a size for each field of each containing class by periodically sampling the size of each field over an interval, the one or more fields of each containing class enabling instances of each containing class to maintain at least one of state and behavior, and

an algorithm handler configured to process the size data for each field of each containing class from the polling mechanism and detect suspected memory leaks of each containing class by identifying which of the one or more fields of each containing class exhibits suspect behavior in the size over the interval.

2. The system of claim 1 , wherein the instrumentation manager is further configured to modify code for the one or more containing classes that hold at least one static or non-static field of collection or array type.

3. The system of claim 1 , wherein the size includes a number of objects held by the static or non-static field of collection or array type.

4. The system of claim 1 , wherein the polling mechanism is further configured to stop tracking the one or more fields of each containing class that do not exhibit suspect behavior in the size over the interval.

5. The system of claim 1 , wherein the polling mechanism is further configured to track only the containing classes having the at least one static or non-static fields of collection or array type.

6. The system of claim 1 , wherein the polling mechanism is further configured to

analyze the suspect behavior in the size of the one or more containing classes by testing each static or non-static field of collection or array type of each containing class for constant growth behavior over the interval including a periodic interval to detect suspected memory leaks that result from constant growth of each static or non-static field of collection or array type.

7. The system of claim 6 , wherein the polling mechanism is further configured to track only specific containing classes instances that exhibit constant growth behavior of the size over the periodic interval.

8. The system of claim 1 , wherein the algorithm handler is further configured to mark the one or more fields of each containing class instance that are identified to exhibit suspect behavior in the size over the interval.

9. The system of claim 1 , wherein identifying which of the one or more fields of each containing class exhibit suspect behavior includes identifying which of the one or more fields of each containing class exhibits constant growth behavior in the size over the interval.

10. The system of claim 1 , further comprising a storage handler configured to:

store information for each containing class having suspected memory leaks,

store information for each of the one or more fields of each containing class that are identified to exhibit suspect behavior in the size over the interval, and

store information for each result that pinpoints a suspected memory leak to a specific field in a specific containing class.

11. The system of claim 1 , further comprising a storage handler configured to:

store information for each result that pinpoints a suspected memory leak to a specific field in a specific containing class.

12. A computer-implemented method, comprising:

monitoring one or more containing classes in a production environment;

identifying which of the one or more containing classes hold at least one static or non-static field of collection or array type;

accessing the one or more containing classes that hold the at least one static or non-static fields of collection or array type;

tracking a size for each field of each containing class by periodically sampling the size of each field over an interval, the one or more fields of each containing class enabling instances of each containing class to maintain at least one of state and behavior;

processing the size data for each field of each containing class; and

detecting suspected memory leaks of each containing class by identifying which of the one or more fields of each containing class exhibits suspect behavior in the size over the interval.

13. The method of claim 12 , further comprising:

modifying code for the one or more containing classes that hold at least one static or non-static field of collection or array type.

14. The method of claim 12 , further comprising:

marking the one or more fields of each containing class that are identified to exhibit suspect behavior in the size over the interval;

stop tracking the one or more fields of each containing class that do not exhibit suspect behavior in the size over the interval; and

tracking only the containing classes instances having the at least one static or non-static fields of collection or array type.

15. The method of claim 12 , wherein:

the size includes a number of objects held by the static or non-static field of collection or array type, and

identifying which of the one or more fields of each containing class exhibit suspect behavior includes identifying which of the one or more fields of each containing class exhibits constant growth behavior in the size over the interval.

16. The method of claim 12 , further comprising:

analyzing the suspect behavior in the size of the one or more containing classes by testing each static or non-static field of collection or array type of each containing class for constant growth behavior over the interval including a periodic interval to detect suspected memory leaks that result from constant growth of each static or non-static field of collection or array type; and

tracking only specific containing classes that exhibit constant growth behavior of the size over the periodic interval.

17. A computer program product, the computer program product being tangibly embodied on a non-transitory computer-readable medium and comprising instructions that, when executed by at least one processor, are configured to:

monitor one or more containing classes in a production environment;

identify which of the one or more containing classes hold at least one static or non-static field of collection or array type;

access the one or more containing classes that hold the at least one static or non-static fields of collection or array type;

track a size for each field of each containing class by periodically sampling the size of each field over an interval, the one or more fields of each containing class enabling instances of each containing class to maintain at least one of state and behavior;

process the size data for each field of each containing class; and

detect suspected memory leaks of each containing class by identifying which of the one or more fields of each containing class exhibits suspect behavior in the size over the interval.

18. The computer program product of claim 17 , further comprising instructions that, when executed by at least one processor, are configured to:

modify code for the one or more containing classes that hold at least one static or non-static field of collection or array type.

19. The computer program product of claim 17 , further comprising instructions that, when executed by at least one processor, are configured to:

mark the one or more fields of each containing class that are identified to exhibit suspect behavior in the size over the interval;

stop tracking the one or more fields of each containing class that do not exhibit suspect behavior in the size over the interval; and

track only the containing classes having the at least one static or non-static fields of collection or array type.

20. The computer program product of claim 16 , wherein:

the size includes a number of objects held by the static or non-static field of collection or array type, and

suspect behavior includes constant growth behavior in the size over the interval.

21. The computer program product of claim 17 , further comprising instructions that, when executed by at least one processor, are configured to:

analyze the suspect behavior in the size of the one or more containing classes by testing each static or non-static field of collection or array type of each containing class for constant growth behavior over the interval including a periodic interval to detect suspected memory leaks that result from constant growth of each static or non-static field of collection or array type; and

track only specific containing classes that exhibit constant growth behavior of the size over the periodic interval.

Assignments (15)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2013
From: KOMISSAR, GILAD A.; KOREN, EYAL; DAFNER, ASAF
To: BMC SOFTWARE, INC.
Reel/Frame 031136/0683 →