IP Library › Granted Patent US 9,213,530
Granted Patent B2
US 9,213,530 · App. 14/087,446 · Granted Dec 15, 2015

Runtime memory throttling

Inventor: James George Driscoll (Santa Clara, CA)
Assignee: Oracle International Corporation
G06F8/42G06F8/47G06F9/4552G06F2209/504
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,213,530
App. No.
14/087,446
Filed
Nov 22, 2013
Granted
Dec 15, 2015
Kind
B2
Art Unit
2192
USPC
717/144
Abstract

A system that implements a memory management policy at runtime when receiving a syntax tree in response to initiating the compiling of software code identifies a plurality of calls within the syntax tree and modifies each the plurality of calls with a corresponding memory-modified call to create a plurality of memory-modified calls. Each memory-modified call is linked with a memory management class and the modifying occurs during the compiling of the software code. Following modification of each of the plurality of calls, the system compiles the plurality of memory-modified calls to generate a bytecode.

Claims (46)

1. A non-transitory computer-readable medium having instructions stored thereon that, when executed by a processor, cause the processor to implement a memory management policy at runtime, the implementation comprising:

receiving a syntax tree in response to initiating a compiling of software code;

identifying a plurality of calls within the syntax tree;

modifying each of the plurality of calls with a corresponding memory-modified call to create a plurality of memory-modified calls, wherein each memory-modified call is linked with a memory management class and the modifying occurs during the compiling of the software code based on a memory policy that comprises a quota of allowed memory; and

following modification of each of the plurality of calls, compiling the plurality of memory-modified calls to generate a bytecode.

2. The computer-readable medium of claim 1 , the compiling the plurality of memory-modified calls comprising:

execute a memory-modified call;

determine if the memory-modified call satisfies the memory policy;

when the memory-modified call fails to satisfy the memory policy, generate a memory exception.

3. The computer-readable medium of claim 2 , the implementation further comprising:

when the memory-modified call fails to satisfy the memory policy, halting the generation of the bytecode.

4. The computer-readable medium of claim 1 , wherein the modifying comprises adding one or more annotations to uncompiled software code, the annotation indicating that a manipulation class should be called.

5. The computer-readable medium of claim 1 , wherein the uncompiled code is written as a GROOVY language.

6. The computer-readable medium of claim 1 , wherein the bytecode is translated by a JAVA virtual machine into machine code.

7. The computer-readable medium of claim 2 , wherein the memory policy is based on JAVA memory constraints.

8. The computer-readable medium of claim 1 , wherein the software code is received from a remote party.

9. A method of implementing a memory management policy at runtime, the method comprising:

receiving a syntax tree in response to initiating a compiling of software code;

identifying a plurality of calls within the syntax tree;

modifying each of the plurality of calls with a corresponding memory-modified call to create a plurality of memory-modified calls, wherein each memory-modified call is linked with a memory management class and the modifying occurs during the compiling of the software code based on a memory policy that comprises a quota of allowed memory; and

following modification of each of the plurality of calls, compiling the plurality of memory-modified calls to generate a bytecode.

10. The method of claim 9 , the compiling the plurality of memory-modified calls comprising:

execute a memory-modified call;

determine if the memory-modified call satisfies the memory policy;

when the memory-modified call fails to satisfy the memory policy, generate a memory exception.

11. The method of claim 10 , the implementation further comprising:

when the memory-modified call fails to satisfy the memory policy, halting generation of the bytecode.

12. The method of claim 9 , wherein the modifying comprises adding one or more annotations to uncompiled software code, the annotation indicating that a manipulation class should be called.

13. The method of claim 9 , wherein the uncompiled code is written as a GROOVY language.

14. The method of claim 9 , wherein the bytecode is translated by a JAVA virtual machine into machine code.

15. The method of claim 10 , wherein the memory policy is based on JAVA memory constraints.

16. A software compiler comprising:

a processor;

a memory device coupled to the processor and storing instructions that generate modules when executed by the processor, the modules comprising:

an identification module that receives a syntax tree in response to initiating a compiling of software code and identifies a plurality of calls within the syntax tree; and

a modification module that modifies each of the plurality of calls with a corresponding memory-modified call to create a plurality of memory-modified calls, wherein each memory-modified call is linked with a memory management class and the modifying occurs during the compiling of the software code based on a memory policy that comprises a quota of allowed memory; and

a compiler module that, following modification of each of the plurality of calls, compiles the plurality of memory-modified calls to generate a bytecode.

17. The software compiler of claim 16 , the compiling the plurality of memory-modified calls comprising:

execute a memory-modified call;

determine if the memory-modified call satisfies the memory policy;

when the memory-modified call fails to satisfy the memory policy, generate a memory exception.

18. The software compiler of claim 17 , the compiling further comprising:

when the memory-modified call fails to satisfy the memory policy, halting the generation of the bytecode.

19. The software compiler of claim 16 , wherein the modifying comprises adding one or more annotations to uncompiled software code, the annotation indicating that a manipulation class should be called.

20. The software compiler of claim 16 , wherein the uncompiled code is written as a GROOVY language.

21. The software compiler of claim 16 , wherein the bytecode is translated by a JAVA virtual machine into machine code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2013
From: DRISCOLL, JAMES GEORGE
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 031659/0223 →
Continuity (2)
Provisional Application 61866223 · Aug 15, 2013
Related Publication 20150052506A1 · Feb 19, 2015