2 bazingaea Bazingaea 于 2016.02.25 20:40 提问

java堆中方法区中的内容会被删除么

java有垃圾回收机制,会自动回收不使用的对象,
问题一:那在堆中的方法区中存储的关于类的代码以及常量池等这些信息会,
在不使用这个类以后,这些信息是会被销毁么?怎样被销毁呢?是由GC回收么?
问题二:栈中自动分配的存储的对象引用会被自动销毁么?代码运行之后销毁么?

1个回答

caozhy
caozhy   Ds   Rxr 2016.02.25 20:43
已采纳

堆上没有什么方法区。代码放在代码区,函数的局部变量放在堆栈上。
栈中自动分配的存储的对象引用会被自动销毁么,是的,在函数返回的时候销毁。

Bazingaea
Bazingaea 好的谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
GC在堆和方法区的内存回收
对象的存活判断对象是否存活,主流实现是可达性分析。 可达性算法的基本思路,通过一系列为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain), 当一个对象到GC Roots 没有任何引用链相连时,相当于图论的从GC Roots不可达,则这个对象不可用。 引用类型 -* 强引用* 只要强引用还存在,垃圾收集器永远不会收掉被引用的
JAVA 方法区是在堆里面吗
三种情况: java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变; java7中,static变量从永久代移到堆中; java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中
java存储机制(栈、堆、方法区详解)
一、java的六种存储地址及解释 1) 寄存器(register):这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。     2) 堆栈(stack):位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若
Java JVM 中 堆,栈,方法区 详解
一 jvm运行时数据区有哪些我们先来看一张图 JVM运行时数据区分类 1. JVM栈 (Java Virtual Machine Stacks) 2. 堆内存 (Heap Memory) 3. 方法区 (Method Area) 4. 本地方法栈 (Native Method Stacks) 5. 程序计数器 (Program Counter (PC) Register)二
Java 堆、栈、方法区的区别
结构化语言里函数(子程序)调用最方便的实现方式就是用栈,以至于现在绝大部分芯片都对栈提供芯片级的硬件支持,一条指令即可搞定栈的pop操作。栈的好处是:方便、快、有效避免内存碎片化。栈的问题是:不利于管理大内存(尤其在16位和32位时代)、数据的生命周期难于控制(栈内的有效数据通常是连续存储的,所以pop时后申请的内存必须早于先申请的内存失效),所以栈不利于动态地管理并且有效地利用宝贵的内存资源。于是
Java堆、栈、方法区、常量池
1 堆与栈Java的数据根据不同的使用情况,有不同的分类,接下来先简单概括一下各种数据类别(不是类型)的内存分配情况,首先帮助区分一下java堆和java栈: 基础数据类型(Value type)直接在栈(stack)空间分配,方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间(reference),又在堆空间分配对象的类变
方法区和常量池
最近一直被方法区里面存着什么东西困扰着?        1.方法区里存class文件信息和class文件常量池是个什么关系。         2.class文件常量池和运行时常量池是什么关系。                  方法区存着类的信息,常量和静态变量,即类被编译后的数据。这个说法其实是没问题的,只是太笼统了。更加详细一点的说法是方法区里存放着类的版本,字段,方法,接口和常量池。
JAVA-堆区,栈区,方法区。
堆区: 村线程操纵的数据(对象形式存放) 1 存储的全部是对象,每个对象包含一个与之对应的class信息--class的目的是得到操作指令 2 jvm只有一个堆区(heap)被所有线程共享,堆区中不存放基本类型和对象引用,只存放对象本身。 栈区: 1 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象)。对象都存放在堆区中。 2 每个
细说java内存区域划分(堆,栈,方法区)
java虚拟机在执行java程序的过程中会把它所管理的内存划分成若干个不同的数据区域。这些区域各有用途,以及创建和销毁的时间。有的区域随着虚拟机的进程的启动而存在,有的则依赖用户线程的启动和结束而建立和销毁。 运行时数据区域 线程共享区:方法区、堆 线程隔离区:虚拟机栈、本地方法栈、程序计数器 java内存区域详解 程序计数器: 是一块较小的内存空间,可以看作当前
Java中的栈,堆,方法区和常量池
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。)      栈中的数据可以共享:  int a = 3;   int b = 3;   编译器先处理int a = 3;首先它会在栈中创