博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆,栈,字符串池,以及进程,线程浅谈内存(个人理解)
阅读量:6150 次
发布时间:2019-06-21

本文共 695 字,大约阅读时间需要 2 分钟。

进程:一个服务的运行至少一个进程的开启。进程就是程序的一次运行,功能的一次跑动。说简单点好比点击跳转,就是开启一个进程。

线程:线程是进程的实体,简单点说,线程就是分配空间(堆,栈),整合内存空间,处理数据交换。

一个进程可以拥有多个线程,多个线程之间可同时,协同运行。

 

堆:内存空间对对象分配的空间通称,分全局堆和局部堆。全局堆就是未分配使用的空间,局部堆就是线程中分配的空间,当该线程所属的进程结束或关闭,内存会释放。

栈:开启进程后,内存分配给线程内所定义的变量的空间统称。

 

以java语言 main主函数为例,浅谈标题;

 main方法加载进栈;

进程开启,main方法最先入栈,main栈内分配空间存储main方法内定义的所有变量,而对象数据会存储在堆中,字符串数据会存储在字符串池中,执行完毕,main出栈,内存释放。

简单说下字符串池以及堆中数据的创建和映射;

数据存储在内存中都会自带一个内存位置,格式例为0x0034这种格式,数据跟变量的绑定都可以理解为是变量跟内存位置的映射。当定义一个变量类型为字符串时,操作系统首先要在字符串池中查找创建的数据是否以及存在字符串池中了,如果已经存在,只需要将该数据所对应的空间位置(0x0034)与该变量绑定而不需要在字符串池中创建该数据,反之,字符串池中创建数据,空间位置绑定变量。所以说变量名可以有很多不一样,但字符串池中的数据都是唯一的。而堆跟字符串池不同,没new一个对象都是全新的不同数据,即使对象数据相同;

 

转载于:https://www.cnblogs.com/shouyerenyinuo/p/10209388.html

你可能感兴趣的文章
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
学习笔记之Data Visualization
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>