当前位置:网站首页>In depth study of JVM bottom layer (II): hotspot virtual machine object
In depth study of JVM bottom layer (II): hotspot virtual machine object
2022-07-02 06:48:00 【I think starfish_ ninety-eight】
List of articles
HotSpot Virtual machine objects
Object creation

Main process :

Determine whether the class corresponding to the object is loaded 、 link 、 initialization : The virtual machine received a new When the command , First, I will check whether the specified parameter can be in Constant pool To locate a symbolic reference to a class , And check the class represented by this symbol reference Whether it has been loaded by the class loader 、 Linked and initialized . If not, execute the corresponding class loading process first .

Allocate memory for objects : Choose which allocation method is by Java Pile up Whether it is regular or not Of , and Java Whether the heap is regular or not depends on whether the garbage collector is equipped with compression and sorting function
- Pointer collision : If Java The memory of the heap is regular , That is, all the used memory is put aside , And the free ones are on the other side . When allocating memory, move the pointer indicator in the middle to the free memory by a distance equal to the size of the object , This completes the allocation of memory .
- Free list : If Java Heap memory is not regular , The virtual machine needs to maintain a list to record what memory is available , In this way, when allocating, you can query the list to allocate enough memory to the object , And update the list record after allocation .

Dealing with concurrency security issues
Synchronize actions to allocate memory space ( use CAS + Failed retries to guarantee atomicity of update operation );
The action of memory allocation is divided into different spaces according to threads , That is, each thread Java A small chunk of memory is pre-allocated in the heap , Called local thread allocation buffer (Thread Local Allocation Buffer, TLAB). Which thread will allocate memory , On which thread TLAB The distribution of . Only TLAB Use up and assign new TLAB when , Need synchronization lock . adopt -XX:+/-UserTLAB Parameter to set whether the virtual machine uses TLAB.

Initialize the allocated memory space : After memory allocation , The virtual machine should initialize the allocated memory space to zero ( Object headers are not included ). If used TLAB, This step will arrive ahead of time TLAB On assignment . This step ensures that the instance fields of the object are in Java Code can be used directly without initial value .
Set the object header of the object : Set object header (Object Header) Information , Include the class of the object 、 Object's HashCode And objects GC Data such as generation age is stored in the object header of the object .
perform init Method to initialize : perform init Method , Initialize the member variables of the object 、 Call the constructor of the class , So an object is created
Memory layout of objects
HotSpot In the virtual machine , The layout of objects stored in memory can be divided into three areas : Object head (Header)、 The instance data (Instance Data) and Alignment filling (Padding).

Object head
stay HotSpot In the virtual machine , The object header consists of two parts of information : Runtime data and Type a pointer , If it's an array object , There is also a space to hold the length of the array .
- Mark Word( Runtime data ): Used to store the data of the object's own runtime , Such as hash code (hashCode)、GC Sub band age 、 A lock held by a thread 、 To the thread ID Etc . stay 32 Bit system occupies 4 byte , stay 64 In the bit system 8 byte ;
- Class Pointer( Type a pointer ): Used to point to the corresponding object Class object ( Its corresponding metadata object ) Memory address of . stay 32 Bit system occupies 4 byte , stay 64 In the bit system 8 byte ;
- Length: If it's an array object , There is also a space to hold the length of the array , Occupy 4 Bytes
The instance data
The instance data It's the object that actually stores Effective information , Whether from Parent inheritance It's still this kind of thing Self , It needs to be recorded , And this part of Storage order By the virtual machine Allocation policy and The order of definition Influence .
The allocation policy is always in the order of byte size from large to small , Put the same byte size together .
Alignment filling
No special meaning , It's not necessary , Placeholder only .
HotSpot The virtual machine requires that each object be Initial address Must be 8 Integer multiples of bytes , It has to be the size of the object 8 Bytes of An integral multiple . and Object header Is precisely 8 Multiple of bytes (32 Position as 1 times ,64 Position as 2 times ), therefore , When the object instance data part is not aligned , It needs to pass Alignment filling To make up for .
Object access location
Java The program needs to go through JVM References on the stack access specific objects in the heap . How objects are accessed depends on JVM The realization of virtual machine . At present, the mainstream access methods are Handle and Direct Pointers Two ways
Handle access
Java The heap is divided into a block of memory as Handle to the pool , Of the object stored in the reference Handle address , And the handle contains Object instance data And Object type data Respective Specific address Information , The specific structure is shown in the figure below :

advantage : What is stored in the reference is Stable Handle address of , When the object is moved ( Moving objects during garbage collection is a very common behavior ) It just changes In handle Of Instance data pointer , and quote There is no need to modify itself .
Direct Pointers
If you use Direct Pointers visit , quote The direct storage in is Object address , that Java The layout inside the heap object must consider how to place access Type data Information about .

advantage : Speed faster , Saved Once the pointer is positioned Time cost of . Because the access of the object Java Very often , As a result, this kind of overhead can add up to a considerable execution cost .HotSpot That's how it works .
边栏推荐
- How to debug wechat built-in browser applications (enterprise number, official account, subscription number)
- Unexpected inconsistency caused by abnormal power failure; Run fsck manually problem resolved
- No process runs when querying GPU, but the video memory is occupied
- Loops in tensorrt
- Apt command reports certificate error certificate verification failed: the certificate is not trusted
- 部署api_automation_test过程中遇到的问题
- Win电脑截图黑屏解决办法
- ZZQ的博客目录--更新于20210601
- Functions of tensorrt
- js中对于返回Promise对象的语句如何try catch
猜你喜欢

flex九宫格布局

There is no way to drag the win10 desktop icon (you can select it, open it, delete it, create it, etc., but you can't drag it)

Sentinel Alibaba open source traffic protection component

The table component specifies the concatenation parallel method

table 组件指定列合并行方法

Alibaba cloud MFA binding Chrome browser

CTF web practice competition

如何调试微信内置浏览器应用(企业号、公众号、订阅号)

Self study table Au

Latex compilation error I found no \bibstyle &\bibdata &\citation command
随机推荐
Présence d'une panne de courant anormale; Problème de gestion de la fsck d'exécution résolu
Apt command reports certificate error certificate verification failed: the certificate is not trusted
Selenium memo: selenium\webdriver\remote\remote_ connection. Py:374: resourcewarning: unclosed < XXXX > solution
2020-9-23 use of QT timer qtimer class.
Promise中有resolve和无resolve的代码执行顺序
ctf三计
Nodejs - Express middleware modification header: typeerror [err_invalid_char]: invalid character in header content
Utilisation de la carte et de foreach dans JS
MySQL index
Latest CUDA environment configuration (win10 + CUDA 11.6 + vs2019)
CTF web practice competition
ctf-web之练习赛
After reading useful blogs
The win10 network icon disappears, and the network icon turns gray. Open the network and set the flash back to solve the problem
virtualenv和pipenv安装
js中map和forEach的用法
CVE-2015-1635(MS15-034 )远程代码执行漏洞复现
Self study table Au
Solution to the black screen of win computer screenshot
工具种草福利帖