Probabilistically finding the connected components of an undirected graph
US-9348857-B2 · May 24, 2016 · US
US9928058B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9928058-B1 |
| Application number | US-201414526195-A |
| Country | US |
| Kind code | B1 |
| Filing date | Oct 28, 2014 |
| Priority date | Oct 28, 2014 |
| Publication date | Mar 27, 2018 |
| Grant date | Mar 27, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
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.
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
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
Related publications grouped by family.
Answers are generated from the same data shown on this page.