Optimized class loading

US9928058B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9928058-B1
Application numberUS-201414526195-A
CountryUS
Kind codeB1
Filing dateOct 28, 2014
Priority dateOct 28, 2014
Publication dateMar 27, 2018
Grant dateMar 27, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A classloader executing in an execution environment, such as a JAVA virtual machine or a software container, may be configured to generate class usage data describing the historical usage of classes by applications in the execution environment. Based upon the class usage data, one or more classes may be pre-loaded into a cache prior to receiving a request from an application to load the classes. If an application subsequently requests a class, the request may be satisfied using the class stored in the cache rather than by loading the class at the time the request is received. A probabilistic data structure, such as a Bloom filter, might also be utilized to determine whether a classloader can possibly load a requested class. Only if the classloader can possibly load the requested class will a search be made for the requested class in a classpath associated with the classloader.

First claim

Opening claim text (preview).

What is claimed is: 1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to: maintain a Bloom filter associated with a classloader, the Bloom filter comprising first data indicating that a classpath of the classloader does not include a first set of classes, and second data indicating that the classpath of the classloader possibly includes a second set of classes, the second data indicating a false positive probability that the classpath of the classloader includes the second set of classes; receive a request at the classloader to load a first requested class; determine, based at least in part on the Bloom filter, that the first requested class is in the second set of classes; in response to determining that the first requested class is in the second set of classes, search the classpath associated with the classloader for the first requested class; determine, based at least in part on the search, that the first requested class is in the classpath; load the first requested class into a memory of the computer; determine, based at least in part on the Bloom filter, that a second requested class is in the first set of classes; determine that a second request to load the second requested class is to be delegated to a second classloader; and delegate the second request to load the second requested class to the second classloader, the second classloader having a second Bloom filter. 2. The non-transitory computer-readable storage medium of claim 1 , wherein the second Bloom filter has an associated second false positive probability, and wherein the false positive probability is greater than or less than the second false positive probability. 3. The non-transitory computer-readable storage medium of claim 1 , wherein the Bloom filter is created prior to receiving the first request to load the first requested class. 4. The non-transitory computer-readable storage medium of claim 1 , wherein the Bloom filter is created based, at least in part, upon the first request to load the first requested class. 5. An apparatus configured to load one or more classes, the apparatus comprising: a processor; a memory; and a computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by the processor, cause the apparatus to: maintain a probabilistic data structure associated with a classloader in the memory, the probabilistic data structure comprising first data indicating that a classpath of the classloader does not include a first set of resources, and second data indicating that the classpath of the classloader possibly includes a second set of resources, the second data indicating a false positive probability that the classpath of the classloader includes the second set of resources, receive a first request to load a first requested resource into the memory, determine, based on the probabilistic data structure, that the first requested resource is in the second set of resources, in response to determining that the first requested resource is in the second set of resources, search the classpath associated with the classloader for the first requested resource, determine, based at least in part on the search, that the first requested resource is in the classpath; determine, based at least in part on the probabilistic data structure, that a second requested resource is in the first set of resources, determine that a second request to load the second requested resource is to be delegated to a second classloader, and delegate the second request to load the second requested resource to the second classloader, the second classloader having a second probabilistic data structure. 6. The apparatus of claim 5 , wherein the probabilistic data structure comprises a Bloom filter. 7. The apparatus of claim 5 , wherein the computer-readable storage medium has further computer-executable instructions stored thereupon to cause the apparatus to delegate a third request to load a third requested resource to a second classloader or return a response to the third request indicating that the third requested resource could not be loaded in response to determining that the third requested resource was not found in the classpath associated with the classloader. 8. The apparatus of claim 5 , wherein the second probabilistic data structure has an associated second false positive probability, and wherein the false positive probability is greater than or less than the second false positive probability. 9. The apparatus of claim 5 , wherein the probabilistic data structure is created prior to receiving the first request to load the first requested resource. 10. The apparatus of claim 5 , wherein the probabilistic data structure is created based, at least in part, upon the first request to load the first requested resource. 11. The apparatus of claim 5 , wherein the probabilistic data structure further comprises data indicating that one or more classpaths associated with one or more parent classloaders and one or more child classloaders do not include the second set of resources, and that the one or more classpaths associated with the one or more parent classloaders and the one or more child classloaders possibly include the first set of resources. 12. The apparatus of claim 11 , wherein the first request is delegated to one of the one or more parent classloaders or one of the one or more child classloaders in response to determining that the one of the one or more parent classloaders or the one of the one or more child classloaders possibly include the first requested resource. 13. A computer-implemented method for loading one or more classes, the method comprising: receiving a first request at a classloader to load a first requested resource into a memory of a computer; determining, based at least in part on a probabilistic data structure, that a classpath associated with the classloader possibly includes the first requested resource, the probabilistic data structure comprising first data indicating that the classpath does not include a first set of resources, and second data indicating that the classpath possibly includes a second set of resources including the requested resource, the second data indicating a false positive probability that the classpath of the classloader includes the second set of resources; in response to the determining, searching the classpath for the first requested resource; determining, based at least in part on the searching, that the first requested resource is in the classpath; determining, based at least in part on the probabilistic data structure, that a second requested resource is in the first set of resources, determining that a second request to load the second requested resource is to be delegated to a second classloader, and delegating the request to load the second requested resource to the second classloader, the second classloader having a second probabilistic data structure. 14. The computer-implemented method of claim 13 , further comprising loading the first requested resource into the memory of the computer in response to determining that the first requested resource was found during the searching of the classpath associated with the classloader. 15. The computer-implemented method of claim 13 , wherein the probabilistic data structure comprises a Bloom filter. 16. The computer-implemented method of claim 13 , wherein the probabilistic data structure is created prior to receiving the first request to load the first requ

Assignees

Inventors

Classifications

  • G06F8/70Primary

    Software maintenance or management · CPC title

  • Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading · CPC title

  • Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9928058B1 cover?
A classloader executing in an execution environment, such as a JAVA virtual machine or a software container, may be configured to generate class usage data describing the historical usage of classes by applications in the execution environment. Based upon the class usage data, one or more classes may be pre-loaded into a cache prior to receiving a request from an application to load the classes…
Who is the assignee on this patent?
Amazon Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/70. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 27 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).