| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 面向对象的内存分析 -> 正文阅读 |
|
[Java知识库]面向对象的内存分析 |
JAVA虚拟机内存模型概念: ? ? ? 1.从属于线程的内存区域 ? ? ?①程序计数器(Program Counter Register) ? ? ?②Java虚拟机栈(Java Virtal Machine Stack)? ? 栈帧(frame) ? ? ?③ 本地方法栈(Native Method Stack) 2.堆(heap)<创建的对象在这里> ?分为新生代,老年代,永久代<JDK8以后没有永久代> 3.方法区(Method Area)<类信息、常量、静态变量> 运行时常量池(Run-Time Constant Pool),主要存放:①字面量(Literal),如文本字符串、final常量值? ②符号引用 4.直接内存(Direct Memory) 程序执行的内存分析过程?Java虚拟机的内存可以简单分为三个区域:虚拟机栈stack、堆heap、方法区method area 1.虚拟机栈,简称栈。 (1)栈描述的时方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等) (2)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等) (3)栈属于线程私有,不能实现线程间的共享 (4)栈的存储特性是"先进后出,后进先出"? ? //<类比子弹夹里的子弹> (5)栈由系统自动分配,速度快。栈是一个连续的内存空间 2.堆 (1)堆用于存储创建好的对象和数组(数组也是对象) (2)JVM只有一个堆,被所有线程共享 (3)堆是一个不连续的内存空间,分配灵活,速度慢 3.方法区(又叫静态区) (1)方法区是JAVA虚拟机的规范 (2)JVM只有一个方法去,被所有线程所共享 (3)方法区实际上也是堆,只是用存储类、常量相关信息 (4)用来存放程序中永远不变或唯一不变的内容(类信息、静态变量、字符串常量等)
内存分析详解:【【尚学堂】Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通-哔哩哔哩】https://b23.tv/IxYoai ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 3:28:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |