`
chengyue2007
  • 浏览: 1481989 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Java 内存释放

    博客分类:
  • java
阅读更多

除了扩大java虚拟机内存之外,我们还需要对自己的程序进行优化,

1、那就是让自己编写的程序符合垃圾回收的机制,

2、然后就是手动的调用System.gc();

 

 

下面分几点符合gc的条件。

(1) 空引用 :当对象没有对他可到达引用时,他就符合垃圾回收的条件。也就是说如果没有对他的引用,删除对象的引用就可以达到目的,因此我们可以把引用变量设置为 null,来符合垃圾回收的条件。

 

StringBuffer sb = new StringBuffer("hello");  

System.

out.println(sb);  

sb=null
(2) 重新为引用变量赋值:可以通过设置引用变量引用另一个对象来解除该引用变量与一个对象间的引用关系。

StringBuffer sb1 = new StringBuffer("hello");  
StringBuffer sb2 = new StringBuffer("goodbye");  
System.out.println(sb1);  
sb1=sb2;//此时"hello"符合回收条件

(3) 方法内创建的对象:所创建的局部变量仅在该方法的作用期间内存在。一旦该方法返回,在这个方法内创建的对象就符合垃圾收集条件。有一种明显的例外情况,就是方法的返回对象。

public static void main(String[] args) {  
        Date d = getDate();  
        System.out.println("d = " + d);  
}  
private static Date getDate() {  
        Date d2 = new Date();  
        StringBuffer now = new StringBuffer(d2.toString());  
        System.out.println(now);  
        return d2;  
}

返回的是对象,而且这个对象还在以后的程序中要用,所以不会释放。

(4) 隔离引用:这种情况中,被回收的对象仍具有引用,这种情况称作隔离岛。若存在这两个实例,他们互相引用,并且这两个对象的所有其他引用都删除,其他任何线程无法访问这两个对象中的任意一个。也可以符合垃圾回收条件。

public class Island {  
        Island i;  
        public static void main(String[] args) {  
                Island i2 = new Island();  
                Island i3 = new Island();  
                Island i4 = new Island();  
                i2.i=i3;  
                i3.i=i4;  
                i4.i=i2;  
                i2=null;  
                i3=null;  
                i4=null;  
        }  
}

 

 

分享到:
评论

相关推荐

    内存释放工具内存释放工具

    内存释放工具是计算机系统优化的一种实用程序,主要目的是回收计算机中不再使用的内存资源,提高系统运行效率。在现代操作系统中,内存管理是一项复杂且至关重要的任务。当程序运行时,它们会占用一定的内存,但有...

    内存释放工具,加快系统运行

    内存释放工具 内存释放工具,加快系统运行

    java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码

    "java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码" 在Windows操作系统中,内存管理是一个非常重要的方面。Windows实现按需调页的虚拟内存机制,使得应用程序可以使用超过...

    java内存泄漏解决

    ### Java内存泄漏解决方案详解 #### 一、Java内存泄漏概述 在Java开发过程中,经常会遇到内存泄漏的问题,尤其是在长时间运行的应用程序中更为常见。本文将详细介绍如何解决Java内存泄漏问题,帮助开发者更好地...

    工具内存释放工具内存释放工具

    内存工具内存释放工具内存释放工具工具内存释放工具内存释放工具

    Java 内存模型

    Java内存模型是Java虚拟机规范中定义的一部分,它规定了Java程序中变量的读写行为,以及线程之间的交互规则。理解Java内存模型对于编写正确、高效的多线程程序至关重要。在Java 5之前,Java内存模型的描述比较模糊,...

    Java内存泄露及内存无法回收解决方案

    Java内存管理是编程中至关重要的一个环节,尤其是对于大型、长时间运行的应用来说,内存泄漏和内存无法回收可能导致系统性能下降,甚至导致系统崩溃。本文将深入探讨Java内存泄露的原理,分析内存无法回收的原因,并...

    java内存原理.doc

    这些变量在函数的栈内存中分配,当超过变量的作用域后,Java 会自动释放掉为变量分配的内存空间,该内存空间可以立刻被另作他用。栈内存的特点是:自动释放、快速分配、空间小。 堆内存用于存放由 new 创建的对象...

    如何解决Java内存泄漏

    ### 如何解决Java内存泄漏 #### 1. 背景 Java凭借其垃圾回收机制大大简化了内存管理,使得开发者无需手动管理内存的释放,从而提升了开发效率。然而,这种自动化管理也可能成为一把双刃剑,特别是当开发人员忽视...

    Java数组与内存控制

    ### Java数组与内存控制 #### 一、Java数组在内存分配方面的知识 ##### 1.1 数组初始化 - **声明数组的时候如何分配内存:** - 在Java中,数组的声明并不直接分配内存,而仅仅是创建了一个数组引用变量。例如: ...

    易语言内存释放

    "易语言内存释放"这个主题主要涉及到程序运行过程中动态分配和释放内存的过程。本文将深入探讨易语言中的内存管理,特别是内存释放及其相关的技术。 易语言是中国本土开发的一种编程语言,其设计目标是让编程变得...

    java内存泄漏分析工具

    Java内存泄漏是一个严重的问题,它会导致程序性能下降,甚至可能导致应用程序崩溃。为了有效地诊断和解决这类问题,开发者需要借助特定的分析工具。本篇将详细探讨Java内存泄漏及其相关的分析工具。 内存泄漏是指...

    JAVA内存分析 - V1.0.0.zip

    Java内存分析是Java开发中非常重要的一个环节,它关乎到应用程序的性能和稳定性。"JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件...

    Java内存泄露检测

    Java内存泄露检测是Java开发中一个关键的议题,因为它直接影响到程序的稳定性和资源效率。内存泄露是指程序中已分配的内存无法被正确地释放,从而导致系统资源的浪费和可能导致程序性能下降甚至崩溃。 首先,理解...

    java内存管理 ppt

    **垃圾收集(Garbage Collection, GC)**是Java内存管理的重要部分,其目标是自动识别并回收不再使用的对象,释放内存。Java提供多种垃圾收集算法,如标记-清除、复制、标记-整理和分代收集。其中,分代收集将堆内存...

    java内存管理问题及解决办法

    本文将深入探讨Java内存管理机制,包括垃圾回收、内存分配与释放、内存泄漏及其预防措施,以及四种引用类型的特点和应用场景。 首先,Java内存分为堆内存(Heap)和栈内存(Stack)。堆内存主要用于存储对象实例,...

    内存释放内存释放内存释放

    "内存释放"是指程序在使用完分配的内存后,将其归还给系统的过程,以避免资源浪费和潜在的内存泄漏问题。本文将深入探讨内存释放的重要性和相关知识点。 首先,理解内存的基本概念至关重要。计算机内存分为两种主要...

    JAVA内存泄漏分析工具

    Java内存泄漏分析是一个关键的系统优化任务,尤其是在大型企业级应用中,长期运行的系统可能会因为内存泄漏导致性能下降甚至服务中断。"JAVA内存泄漏分析工具"正是一款用于解决此类问题的专业工具,它能帮助开发者...

Global site tag (gtag.js) - Google Analytics