基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍_java

#. 在java中有两类内存。分别称为stack(堆栈)和heap(堆)。

stack是程序内存空间,因此所有的基本类型和对象的引用是存在stack中。

heap是java虚拟机储存对象的,它是一个巨大的内存,当你创造一个对象,java虚拟机把对象放入heap中,把创造的对象的地址放入stack中。

因此,基本类型、对象的引用储存在stack中;对象储存在heap中。

#. java中的垃圾回收机制

当你new一个新的对象,java分配必需的内存。当你用完一个对象时,java的垃圾回收器为你把内存收回。

垃圾回收以线程的形式在后台运行,寻找那些无有用引用(reference)的对象,发现之后便销毁对象,并收回内存。

垃圾回收是在java虚拟机间实现的,它们通常有相同的步骤,首先垃圾回收器获得正在运行的线程和所有已经加载的类的快照,

然后所有线程中涉及到的对象被标记为最近使用的,当可能涉及的对象都被标记的时候,剩下没标记的就被舍弃。

为了帮助虚拟机,我们主动移除一些不在需要的对象是一个不错的做法,可以通过将引用设置为null来实现。

eg:

Text t = new Test();

t.someAction();

//all done

t = null;

时间: 2024-11-26 15:15:10

基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍_java的相关文章

解读PHP中的垃圾回收机制_php技巧

PHP的基本GC概念PHP语言同其他语言一样,具有垃圾回收机制.那么今天我们要为大家讲解的内容就是关于PHP垃圾回收机制的相关问题.希望对大家有所帮助.PHP strtotime应用经验之谈PHP memory_get_usage()管理内存PHP unset全局变量运用问题详解PHP unset()函数销毁变量教你快速实现PHP全站权限验证一.PHP 垃圾回收机制(Garbage Collector 简称GC) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾.PHP会将其在内存中销

java垃圾回收机制-java堆中方法区中的内容会被删除么

问题描述 java堆中方法区中的内容会被删除么 java有垃圾回收机制,会自动回收不使用的对象,问题一:那在堆中的方法区中存储的关于类的代码以及常量池等这些信息会, 在不使用这个类以后,这些信息是会被销毁么?怎样被销毁呢?是由GC回收么?问题二:栈中自动分配的存储的对象引用会被自动销毁么?代码运行之后销毁么? 解决方案 堆上没有什么方法区.代码放在代码区,函数的局部变量放在堆栈上.栈中自动分配的存储的对象引用会被自动销毁么,是的,在函数返回的时候销毁.

Java垃圾回收机制中对象引用遍历的实现原理

问题描述 有没有大牛给详细解释下Java垃圾回收机制中对象引用遍历的实现原理,java回收机制中的有向图是何时建立.如何建立,有向图有几个? 解决方案 解决方案二:垃圾回收在jvm中并没有特定的算法,不同的人可以有不同的实现,未必会使用有向图譬如一种实现可以这样,在没有内存可分配时,直接抛出OutOfMemory都是符合规范的解决方案三:该回复于2011-04-07 11:01:48被版主删除解决方案四:这个要讲的话就多了解决方案五:有本书好像叫深入JVM,你可以找一下,里面解释的很详细解决方案

析JAVA之垃圾回收机制

本文为2010年编写,所以有很多看法不是很准确,有一定的参考价值,如需要更加深入细节,请参看,2012年编写的关于JVM的文章: 认识JVM--第一篇-对象生成&回收算法 认识JVM--第二篇-java对象内存模型 JVM第三篇(简单demo) 系统架构-性能篇章1(应用系统性能2-OOM&参数配置) 相继的还会有更多的java深入的知识和机制. 对于JAVA编程和很多类似C.C++语言有一个巨大区别就是内存不需要自己去free或者delete,而是由JVM垃圾回收机制去完成的.对于这个过

细述 Java垃圾回收机制→How Java Garbage Collection Works?

这是垃圾回收机制系列文章的第二篇.希望您已经读过了第一部分Java垃圾回收简介. Java垃圾回收是一个自动运行的管理程序运行时使用的内存的进程.通过GC的自动执行JVM将程序员从申请和释放内存的繁重操作中解放出来. Java垃圾回收GC初始化 作为一个自动执行的进程,程序员不需要在代码中主动初始化GC.Java提供了System.gc()和Runtime.gc()这两个hook来请求JVM调用GC进程. 尽管要求系统机制给程序员提供调用GC的机会,但是实际上这是由JVM负责决定的.JVM可以选

[JVM]成为JavaGC专家(1)—深入浅出Java垃圾回收机制

对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用. 这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者.如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验.如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点.当然,我们不能以偏概全,这不能作为评价一个好的开发人员的共通标准.但是,我要说的是,深入理解GC是成为一名伟

从JVM的内存管理角度分析Java的GC垃圾回收机制_java

一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能.本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能.    GC的基本原理    Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放.     对于程序员来说,分配对象使用ne

Java的垃圾回收机制研究

一.谁在做Garbage Collection? 一种流行的说法:在C++里,是系统在做垃圾回收;而在Java里,是Java自身在做. 在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存.这是流行的说法.确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可以回收这块空间了.这个要求,对编码者来说,是件很麻烦.很难做到的事.随便上哪个BBS,在C/C++版块里总是有一大堆关于内存泄漏的话题. Java采用一种不同的,很方便的方法:Garbage Collecti

简单讲解Lua中的垃圾回收机制

  这篇文章主要介绍了Lua中的垃圾回收机制,自动的垃圾回收是Lua的重要特性之一,需要的朋友可以参考下 Lua使用基于被内置在Lua某些算法的垃圾收集自动内存管理.可以自动内存管理的结果,作为一个开发者: 没有必要担心的对象分配内存. 无需释放他们时,不再需要可将其设置为nil. Lua使用运行不时收集死的对象时,不再从Lua程序中访问垃圾收集器. 所有对象,包括表,用户数据,函数,线程,字符串等受自动内存管理. Lua使用增量标记和使用两个数字来控制其垃圾回收周期即垃圾收集暂停和垃圾收集器的