首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
Java的内存结构是什么,全局变量,临时变量,静态变量分别存
[问答题]
请你说一下Java的内存结构是什么,全局变量、临时变量、静态变量分别存在哪里,堆分为哪几块,比如说新生代老生代,那么新生代又分为什么
添加笔记
求解答(0)
邀请回答
收藏(424)
分享
纠错
23个回答
添加回答
24
Allen烽
首先说内存结构吧,大体可以分成堆内存,方法区,和栈。
全局变量存放在堆,临时变量存放在栈 没然后静态变量存放在方法区。
下图就解释了内存模型JMM
我们在这块主要关注的就是eden和surviver区,涉及到gc的概念(建议提问的兄弟去补下这块知识,因为真的很重要) 新生代包含一块eden和俩块surviver区,默认比例是8:1:1 使用复制算法,这块也是minorgc的范围,很频繁。新创建的对象大多分配于此。经历过一定数量gc【默认15次】还没回收的对象晋升老年代。
发表于 2018-12-19 09:57:57
回复(4)
5
AI4U
,,,严格地说 java并没有全局变量的说法吧 因为java里没有任何东西可以脱离类而存在🙄🙄
发表于 2019-03-04 13:07:38
回复(1)
5
踟蹰千年
程序计数器,本地方法栈,虚拟机栈,方法区,堆,全局变量也就是类的成员变量在堆里,静态常量在方法区中,局部变量在虚拟机栈里,对象创建时首先在eden区,通过可达性检验经过多次gc,一般为15次进去老年代
发表于 2019-01-15 19:31:21
回复(0)
1
友人说201904171536944
代码区:是编译器生成的一个exe区段,存放函数体的二进制代码 栈区:存放函数的参数,局部变量的值等,其操作方式类似于数据结构中的栈,const局部变量也是放在栈里 堆区:就是malloc和new之类的内存所在区段,一般由程序员分配释放,分配方式类似于链表 静态数据区:是编译器生成的一个exe区段,初始和未初始化的全局变量和局部变量都放在这里, 常量区:是编译器生成的一个exe区段,const全局变量也放在常量区。 全局变量,临时变量,静态变量分别存在哪里 局部变量保存在栈中,全局变量和静态变量存储在静态数据区。 堆分为哪几块,比如说新生代老生代,那么新生代又分为什么? java垃圾收集管理器的主要区域,因此很多时候被称为“GC堆”。 分为新生代和老年代; 新生代分为:Eden和Survivor。
发表于 2019-04-26 19:13:04
回复(0)
1
牛客406896883号
请你说一下Java的内存结构是什么,全局变量、临时变量、静态变量分别存在哪里,堆分为哪几块,比如说新生代老生代,那么新生代又分为什么
jmm是为了屏蔽各个硬件h和操作系统之间的区别,是java程序再各个平台上达到一样的效果。
jmm内存氛围主内存与工作内存,线程不直接操作主内存,线程直接操作工作内存,工作内存与主内存交互,工作内存中有一个主内存的副本。全局变量存储在堆中,临时变量栈中,静态变量方法区中。堆分为新生代老年代永久带,新生代分为伊甸区 s1 s0.
发表于 2019-03-23 21:30:34
回复(0)
0
woli莹
内存结构:代码区,堆区,栈区,静态数据区,常量区。 局部变量保存在栈中,全局变量和静态变量存储在静态数据区。
编辑于 2019-04-29 19:37:02
回复(0)
0
Steven08
全局变量 临时变量静态变量存在常量池。
堆分为新生代 老年代 永久代
编辑于 2019-04-25 22:29:17
回复(0)
0
Gaoyuer
代码区:是编译器生成的一个exe区段,存放函数体的二进制代码 栈区:存放函数的参数,局部变量的值等,其操作方式类似于数据结构中的栈,const局部变量也是放在栈里 堆区:就是malloc和new之类的内存所在区段,一般由程序员分配释放,分配方式类似于链表 静态数据区:是编译器生成的一个exe区段,初始和未初始化的全局变量和局部变量都放在这里, 常量区:是编译器生成的一个exe区段,const全局变量也放在常量区。 全局变量,临时变量,静态变量分别存在哪里 局部变量保存在栈中,全局变量和静态变量存储在静态数据区。 堆分为哪几块,比如说新生代老生代,那么新生代又分为什么? java垃圾收集管理器的主要区域,因此很多时候被称为“GC堆”。 分为新生代和老年代; 新生代分为:Eden和Survivor。
发表于 2019-04-25 17:45:26
回复(0)
0
江畔8670
java的内存结构分为,栈,堆和构造区,全局变量,临时变量,静态变量分别存在构造区中
编辑于 2019-04-25 15:34:03
回复(0)
0
Soul~
成员变量是 定义在一个类的变量:类中方法外 局部变量是定义在一个方法内的变量:方法中 成员变量分为: 静态属性:随类的存在而存在,是在类加载的初始化 非静态属性:随实例的属性存在而存在。 局部变量: 局部变量不能加static,包括protected, private, public这些也不能加。局部变量保存在栈中。 局部编程必须在声明时初始化。
发表于 2019-04-25 14:23:53
回复(0)
0
Ly~
Java内存的结构: Java把内存划分为4个部分 1. 代码区 1、栈区 3、堆区 4、静态区域 其中栈的存取速度是最快的,所以局部变量以及一些小型的数据都 保存在栈区中,对象保存在堆区中。 静态区 :保存字符常量以及成员变量。 栈区中保存的变量就是保存变量的值。 引用数据类型: 栈区中保存的是对象在堆区的地址,所以也称作栈区的变量地址为引用
发表于 2019-04-25 00:49:41
回复(0)
0
loseyouself
java中的内存分布有:堆,栈,方法区,常量池 ①当我们调用方法的时候类中基本数据类型的变量和引用类型的对象就加载到栈中,随着方法的结束就销毁,他是方法私有的,存放临时变量 ②堆中主要存储我们new出来的对象,他有持续时间,公有的 ③方法区里存放字节码文件 ④常量池中存放字面值常量 ⑤经历15次gc垃圾回收器的回收还没有被回收的就称为老年区
发表于 2019-04-24 00:27:25
回复(0)
0
黑白涧
Java的内部结构大体可以分为堆内存,方法区和栈。 全局变量放在堆内存,临时变量放在栈,静态变量放在方法区。 堆可以分为块Eden和块surviver,大体比例是8:1:1。新生代大概经过15次gc就变成老生代。
编辑于 2019-04-03 08:05:36
回复(0)
0
CMLX
java中的内存分布有:堆,栈,方法区,常量池 ①当我们调用方法的时候类中基本数据类型的变量和引用类型的对象就加载到栈中,随着方法的结束就销毁,他是方法私有的,存放临时变量 ②堆中主要存储我们new出来的对象,他有持续时间,公有的 ③方法区里存放字节码文件 ④常量池中存放字面值常量 ⑤经历15次gc垃圾回收器的回收还没有被回收的就称为老年区
发表于 2019-03-21 22:53:04
回复(0)
0
流年201903191021864
内存结构是栈,堆,方法区,堆,全局变量存在堆中,局部变量存在栈中,静态变量存在方法区的静态区中
编辑于 2019-03-19 13:11:30
回复(0)
0
。。。。。dd
ww
发表于 2019-03-06 18:37:08
回复(1)
0
追201903031316439
哈哈
发表于 2019-03-05 12:21:17
回复(0)
0
:201902122010461
堆栈方法区,全局变量放堆内存中,局部变量放栈内存中,静态变量放方法区中的常量池中
发表于 2019-02-24 12:13:41
回复(0)
0
积极废人丶帝皓
堆是用来存放全局变量的,栈是存放局部变量的,静态方法存在静态方法区。
发表于 2019-02-17 09:55:08
回复(0)
0
字节研发工程师
1内存:堆,栈,静态方法区, 2全局变量:堆 局部变量: 栈(用完就弹栈了) 方法:静态方法区 ???
编辑于 2019-02-16 13:05:11
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
测试工程师
Java
上传者:
小小
难度:
23条回答
424收藏
6891浏览
热门推荐
相关试题
假定一个待哈希存储的线性表为(32...
哈希
评论
(1)
5.下列判断正确的是( )
资料分析
言语理解与表达
资料分析
评论
(1)
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
《拳皇97》最后BOSS是谁?
游戏常识
评论
(1)
《魔兽世界》中,下列不属于玩家可以...
游戏常识
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题