20,741
edits
m (→Heuristics) |
|||
| Line 246: | Line 246: | ||
# '''Age distribution of objects''': The GC can track the age distribution of the objects in the heap and ensure that they are being properly divided into the different generations. This can help to ensure that the GC is correctly identifying which objects are likely to be short-lived and which are likely to be long-lived. | # '''Age distribution of objects''': The GC can track the age distribution of the objects in the heap and ensure that they are being properly divided into the different generations. This can help to ensure that the GC is correctly identifying which objects are likely to be short-lived and which are likely to be long-lived. | ||
# '''Collection frequency''': The GC can track the frequency at which collections are being performed on each generation and ensure that this frequency is appropriate. For example, it may be appropriate to perform collections more frequently on the younger generations, since objects in these generations are more likely to be short-lived. | # '''Collection frequency''': The GC can track the frequency at which collections are being performed on each generation and ensure that this frequency is appropriate. For example, it may be appropriate to perform collections more frequently on the younger generations, since objects in these generations are more likely to be short-lived. | ||
# '''Promotion rate''': The GC can track the rate at which objects are being promoted from one generation to the next and ensure that this rate is within expected limits. This can help to ensure that the GC is correctly identifying which objects are likely to be long-lived and promoting them to higher generations. | # '''Promotion rate''': The GC can track the rate at which objects are being promoted from one generation to the next and ensure that this rate is within expected limits. This can help to ensure that the GC is correctly identifying which objects are likely to be long-lived and promoting them to higher generations. | ||
# '''Throughput and pause time''': As mentioned previously, the GC can track its throughput and pause time to ensure that it is functioning efficiently. However, it may also be useful to track these metrics separately for each generation to ensure that the GC is functioning optimally within each generation. | # '''Throughput and pause time''': As mentioned previously, the GC can track its throughput and pause time to ensure that it is functioning efficiently. However, it may also be useful to track these metrics separately for each generation to ensure that the GC is functioning optimally within each generation. | ||
# '''Memory usage''': The GC can track the amount of memory being used by each generation and ensure that it is within expected limits. This can help to ensure that the GC is not allowing any single generation to consume too much memory. | # '''Memory usage''': The GC can track the amount of memory being used by each generation and ensure that it is within expected limits. This can help to ensure that the GC is not allowing any single generation to consume too much memory. | ||
# '''Fragmentation''': The GC can track the level of fragmentation in the heap and ensure that it is within acceptable limits. High levels of fragmentation can cause performance issues, so it is important to ensure that the GC is keeping fragmentation under control. | # '''Fragmentation''': The GC can track the level of fragmentation in the heap and ensure that it is within acceptable limits. High levels of fragmentation can cause performance issues, so it is important to ensure that the GC is keeping fragmentation under control. | ||