当前位置:网站首页>【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,方法裏面包含的指令等等
边栏推荐
- QCOM LCD调试
- 现代交换原理MOOC部分题目整理
- Lumiprobe细胞成像分析:PKH26 细胞膜标记试剂盒
- Have you finished the examination of level II cost engineer? There are also qualification regulations!
- 基于微信小程序的婚纱影楼门户小程序
- Interview: what are the similarities and differences between abstract classes and interfaces?
- 通过例子学习Rust
- 交流电和直流电的区别是什么?
- DPDK 源码测试时性能下降问题
- CpG solid support research: lumiprobe general CpG type II
猜你喜欢

JS text box loses focus to modify width text and symbols

Quartus replication IP core

wordpress zibll子比主题6.4.1开心版 免授权

CPG 固体支持物研究:Lumiprobe通用 CPG II 型

Redis 的 最新windows 版本 5.0.14

分享一个因子挖掘的利器:遗传规划

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

Wedding studio portal applet based on wechat applet

【LeetCode】12、整数转罗马数字

Simulation questions and answers of the latest national fire-fighting facility operators (primary fire-fighting facility operators) in 2022
随机推荐
无线传感器网络学习笔记(一)
How high is the gold content of grade II cost engineer certificate? Just look at this
8VC Venture Cup 2017 - Elimination Round D. PolandBall and Polygon
What are functions in C language? What is the difference between functions in programming and functions in mathematics? Understanding functions in programming languages
CpG solid support research: lumiprobe general CpG type II
DH parameters of robotics and derivation using MATLAB symbolic operation
乔布斯在斯坦福大学的演讲稿——Follow your heart
Biovendor sRAGE antibody solution
[JVM series] JVM tuning
Don't roll! How to reproduce a paper with high quality?
Biovendor sRAGE protein solution
The latest examination questions and answers for the eight members (standard members) of Liaoning architecture in 2022
metaRTC5.0 API编程指南(一)
程序员坐牢了,会被安排去写代码吗?
sqlmap工具使用手册
基于微信小程序的婚纱影楼门户小程序
Leetcode 88: merge two ordered arrays
Voltage mode and current mode control of switching power supply
Redis 的 最新windows 版本 5.0.14
2022年全国最新消防设施操作员(初级消防设施操作员)模拟题及答案