当前位置:网站首页>【JVM】——JVM中內存劃分
【JVM】——JVM中內存劃分
2022-06-28 05:17:00 【同學潘】
JVM中的內存區域劃分
JVM啟動之後就會從操作系統申請一大塊內存區域,然後需要根據功能,把這個內存分成不同的小區域。
一個java進程中,可能包含著多個線程,多個線程之間,共用同一份堆和方法區,但是每個線程有自己的棧和程序計數器;每個進程有自己的堆,多個進程之間不共享
程序計數器
它是內存中最小的區域:保存了當前線程下一條要執行的指令的地址在哪
指令,也就是字節碼,程序想要運行,JVM就得把字節碼加載起來,放到內存中,程序就會一條一條把指令從內存取出來,放到CPU上執行,也就需要隨時記住當前執行到哪一條了。這是因為CPU是並發式的執行程序的,不是只給你一個進程提供服務的,要伺候所有的進程。(這就相當於我們平時看書的時候,最後看到哪一頁,就把書簽放到那一頁,以便於我們下一次就可以直接從那一頁開始看了)
而因為操作系統是以線程為單比特進行調度執行的,每個線程都得記錄自己的執行比特置,所以程序計數器是每個線程都有一個的。
棧
裏面放的主要是局部變量和方法調用信息
方法調用的時候,每次調用一個新的方法,就都涉及到“入棧”操作;每次執行完了一個方法,都涉及到“出棧”操作。
注意:棧空間其實是比較小的,雖說在JVM中可以配置棧空間的大小,但是一般也就是幾M或者幾十M,因此棧是很有可能會滿了的。正常寫代碼,一般沒事,就怕遞歸,並且遞歸條件沒整好,那就直接棧溢出了StackOverflowException
棧是每個線程都有一份的
堆
一個進程只有一份,多個線程共用一個堆,它也是內存中空間最大的區域
new出來的對象,就是在堆中,那麼對象的成員變量自然也是在堆中了
這裏我們要區分一個比較容易搞混的東西:
內置類型的變量在棧上,引用類型的變量在堆上 ,這個說法是否正確
答案是不正確,局部變量在棧上,成員變量和new的對象在堆上,跟是什麼類型的變量沒有關系
方法區
方法區中,放的是“類對象”。
所謂的“類對象”就是:我們所寫的.java這樣的代碼會變成 .class(二進制字節碼),.class 會被加載到內存中,也就被JVM構造成了類對象(加載的過程就成為“類加載”)
類對象裏還有個很重要的東西,靜態成員——被static修飾的成員,成為了“類屬性”,而普通的成員,叫做“實例屬性”
類對象就描述了這個類長啥樣:類的名字是啥,裏面有哪些成員,有哪些方法,每個成員叫啥名字是啥類型,是public/private,每個方法叫啥名字是啥類型,是public/private,方法裏面包含的指令等等
边栏推荐
- 电源插座是如何传输电的?困扰小伙伴这么多年的简单问题
- Liuhaiping's mobile phone passes [[uiapplication sharedapplication] delegate] window. safeAreaInsets. The height of the bottom security zone is 0
- Object detection with OpenCV
- 程序员-放羊娃
- lotus v1.16.0 calibnet
- BioVendor sRAGE抗体解决方案
- 交流电和直流电的区别是什么?
- 氨基染料研究:Lumiprobe FAM 胺,6-异构体
- Keil C51的Data Overlaying机制导致的函数重入问题
- It is the latest weapon to cross the blockade. It is one of the fastest ladders.
猜你喜欢

【JVM系列】JVM调优

openssl客户端编程:一个不起眼的函数导致的SSL会话失败问题

A guide to P2P network penetration (stun) for metartc5.0 programming

开关电源电压型与电流型控制

吴恩达深度学习测验题:deeplearning.ai-week1-quiz

Redis 的 最新windows 版本 5.0.14

How to do a good job of gateway high availability protection in the big promotion scenario

电源插座是如何传输电的?困扰小伙伴这么多年的简单问题

The latest examination questions and answers for the eight members (standard members) of Liaoning architecture in 2022

Quartus replication IP core
随机推荐
The short video local life section has become popular. How to grasp the new opportunities?
2022 low voltage electrician examination questions and answers
mysql导出数据库字典成excel文件
高通平台 Camera 之 MCLK 配置
Function reentry caused by Keil C51's data overlaying mechanism
Dart learning - functions, classes
刘海屏手机在部分页面通过[[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom得到底部安全区高度为0问题
C语言中函数是什么?编程中的函数与数学中的函数区别?理解编程语言中的函数
2022烟花爆竹经营单位安全管理人员特种作业证考试题库及模拟考试
IP datagram sending and forwarding process
How to learn programmable logic controller (PLC)?
整理网上蛋糕商城项目
项目经理考完PMP就够了?不是的!
OpenSSL client programming: SSL session failure caused by an obscure function
基于微信小程序的婚纱影楼门户小程序
2022西式面点师(高级)考试试题模拟考试平台操作
短视频本地生活版块成为热门,如何把握新的风口机遇?
Sqlmap tool user manual
MCLK configuration of Qualcomm platform camera
程序员-放羊娃