Home  >  Article  >  Java  >  Java interview questions summarized from many years of development experience——(5)

Java interview questions summarized from many years of development experience——(5)

王林
王林forward
2020-08-15 16:41:072247browse

Java interview questions summarized from many years of development experience——(5)

#1. Describe the principle and mechanism of JVM loading class files?

(More interview question recommendations: java common interview questions)

Loading: Find and import class files;

Check: Load The correctness of the imported class file data;

Preparation: allocate storage space for static variables of the class;

Analysis: convert symbol references into direct references (this step is optional)

Initialization: Initialize static variables, static code blocks, and start execution when the program calls the static members of the class, so the static method main() will become the entry method of the general program. The class constructor also triggers this action.

2. Are there memory leaks in Java? Please describe briefly.

Memory leak means that an object or variable that is no longer used by the program has been occupying the memory. The scenario of memory leak in Java, in layman’s terms, is that the programmer may create an object. , this object will no longer be used in the future, but this object has been referenced, that is, this object is useless but cannot be recycled by the garbage collector. This is a memory leak in Java.

(Related tutorial recommendation: java introductory tutorial)

If the method of an instance object of an external class returns an instance object of an internal class, the internal class object is Long-term reference, even if the outer class instance object is no longer used, but because the inner class persists the instance object of the outer class, the outer class object will not be garbage collected, which will also cause a memory leak.

3. What is GC? Why have GC?

GC means garbage collection, which is used to prevent memory leaks and effectively utilize memory. The garbage collector usually runs as a separate low-priority thread, clearing and recycling objects in the memory heap that have died or have not been used for a long time under unpredictable circumstances. Programmers cannot call the garbage collector in real time. An object or all objects are garbage collected.

4. JVM memory model (important, GC algorithm, new generation, old generation, permanent generation, etc. need to be understood in detail)

New generation: New objects are The new generation is used to allocate memory. When Eden space is insufficient, surviving objects will be transferred to Survivor. The size of the new generation can be controlled by -Xmn, or -XX:SurvivorRatio can be used to control the ratio of Eden to Survivor

Old generation: used to store objects in the new generation that have survived multiple garbage collections

Persistence: implements the method area, which mainly stores all loaded class information, method information, constant pools, etc. .

You can specify the initialization value and maximum value of the persistent band through -XX:PermSize and -XX:MaxPermSize. Permanent Space is not the same as the method area. It is just that Hotspot JVM uses Permanent Space to implement the method area. Some virtual machines do not have Permanent Space and use other mechanisms to implement the method area.

Mark-Compact

This algorithm combines the advantages of the "mark-clear" and "copy" algorithms. It is also divided into two stages. The first stage marks all referenced objects starting from the root node. The second stage traverses the entire heap, clears unmarked objects and "compresses" surviving objects into one of the heaps, and discharges them in order. This algorithm avoids the fragmentation problem of "mark-and-sweep" and also avoids the space problem of the "copy" algorithm.

(Related video tutorial recommendations: java course)

5. Working principle of GC

GC passes through each object There is a reference counting attribute. When a reference is added, the count increases by 1. When a reference is released, the count decreases by 1. When the count is 0, it can be recycled. GC is a background daemon process. For Java programmers, the new keyword is used to allocate objects;

When releasing an object, as long as all references to the object are assigned to null so that the program can no longer access the object, we call the object "unreachable". The GC will be responsible for recycling all "unreachable" objects. Reach the memory space of the object.

For GC, when the programmer creates an object, GC begins to monitor the address, size and usage of the object. Usually, GC uses a directed graph to record and manage all objects in the heap. In this way, it is determined which objects are "reachable" and which objects are "unreachable". When the GC determines that some objects are "unreachable", the GC is responsible for reclaiming these memory spaces.

However, in order to ensure that GC can be implemented on different platforms, the Java specification does not strictly stipulate many behaviors of GC. For example, there are no clear regulations on important issues such as what type of recycling algorithm to use and when to perform recycling. Therefore, different JVM implementers often have different implementation algorithms. This also brings a lot of uncertainty to the development of Java programmers.

The above is the detailed content of Java interview questions summarized from many years of development experience——(5). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete