/**
* 对象在没有任何引用可以到达时,生命周期结束,成为垃圾。
* 所有对象在被回收之前都会自动调用finalize()方法。
* **************************************************
* 一个对象在成为垃圾之后不会被马上回收,
* JVM会检测内存中的垃圾堆积到一定程度时才会回收,
* 如果我们不想等到这个时候才回收,
* 可以使用System.gc()方法来通知虚拟机回收垃圾。
* 调用该方法之后JVM会开启新线程做处理垃圾的工作,这需要一定时间。
*/
public class GcDemo { public static void main(String[] args) throws Exception { for(int i = 0; i < 1000; i ++){
new Person(); //创建一个对象之后,没有使用成为垃圾
}
System.out.println("回收之前: " + Person.count);
System.gc(); //通知虚拟机进行垃圾回收
/*
* 调用System.gc()之后JVM会开启新线程做处理垃圾的工作,需要一定的时间,让其休眠几秒之后,再查看垃圾回收的效果
* 垃圾多回收需要的时间也会长
*/
Thread.sleep(1000);
System.out.println("回收之后: " + Person.count);
} } class Person{
//定义一个count来计数,查看回收之前和回收之后
public static int count; public Person(){
count ++; //每创建一个对象count加加
}
//所有对象在被回收之前都会自动调用finalize()方法
public void finalize(){
count --; //回收一个垃圾减掉一个
}
}

Java基础之垃圾回收的更多相关文章

  1. java基础之 垃圾回收机制

    1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的 ...

  2. Java基础教程——垃圾回收机制

    垃圾回收机制 Garbage Collection,GC 垃圾回收是Java的重要功能之一. |--堆内存:垃圾回收机制只回收堆内存中对象,不回收数据库连接.IO等物理资源. |--失去使用价值,即为 ...

  3. Java编程思想学习笔记_1(Java内存和垃圾回收)

    1.Java中对象的存储数据的地方: 共有五个不同的地方可以存储数据. 1)寄存器.最快,因为位于处理器的内部,寄存器按需求分配,不能直接控制. 2)堆栈.位于通用RAM,通过堆栈指针可以从处理器那里 ...

  4. Java虚拟机之垃圾回收详解一

    Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这 ...

  5. JVM基础(5)-垃圾回收机制

    一.对象引用的类型 Java 中的垃圾回收一般是在 Java 堆中进行,因为堆中几乎存放了 Java 中所有的对象实例.谈到 Java 堆中的垃圾回收,自然要谈到引用.在 JDK1.2 之前,Java ...

  6. 【java虚拟机序列】java中的垃圾回收与内存分配策略

    在[java虚拟机系列]java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略. 垃 ...

  7. 高吞吐低延迟Java应用的垃圾回收优化

    高吞吐低延迟Java应用的垃圾回收优化 高性能应用构成了现代网络的支柱.LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求.要优化用户体验,低延迟地响应这些请求非常重要. 比如说,用户经 ...

  8. 每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...

  9. Java GC(垃圾回收)机制知识总结

    目录 Java GC系列 Java关键术语 Java HotSpot 虚拟机 JVM体系结构 Java堆内存 启动Java垃圾回收 Java垃圾回收过程 垃圾回收中实例的终结 对象什么时候符合垃圾回收 ...

随机推荐

  1. sqlserver数据库差异比较

    相信这个功能会对好多网友有帮助,不得不说vs的功能很强大,废话不多说,切入正题 我们可以使用 vs自带的工具比较两个数据库的架构差异和数据差异,这篇文章只是写了架构的差异,我相信看完以后, 如何进行数 ...

  2. 第9课_1_cluster安装

    1. 配置网络 vi ifcfg-eth0 ifup ifcfg-eth0 [root@localhost init.d]# ./network restart Shutting down inter ...

  3. leetcode Jump Game II python

    @link http://www.cnblogs.com/zuoyuan/p/3781953.htmlGiven an array of non-negative integers, you are ...

  4. windows如何安装和配置mongodb

    https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-windows/

  5. [转]iOS UIAppearance使用详解

    在iOS 5以前,自定义原生控件的外观并没有原生支持,因此开发人员感觉很麻烦.开发人员经常面临的问题是修改一个控件所有实例的外观.解决这个问题的正确方法是重写一遍控件.但由于这么做非常费时,一些开发人 ...

  6. 【转】 UIButton上使用UIEdgeInsetsMaketitle跟图片对齐

    [转]http://blog.csdn.net/yanxiaoqing/article/details/7230660 默认情况下,不设置的效果,都使居中现实,button为150*150 使用以下设 ...

  7. c语言中 %p的含义

    格式控制符“%p”中的p是pointer(指针)的缩写.指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数.printf函数族中对于%p一般以十 ...

  8. [问题解决] "Nautilus could not create the required folder "/home/kenneth/.config/nautilus"

    错误: "Nautilus could not create the required folder "/home/kenneth/.config/nautilus" 发 ...

  9. 解决:未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0

    开发环境:Microsoft Visual Studio 2013 MVC4.0 使用SignalR的过程中随着版本的升级,其它程序集也跟着升级,如Newtonsoft.Json,一般编译的时候,如果 ...

  10. CentOS 七 vs CentOS 6的不同

    CentOS 七 vs CentOS 6的不同   CentOS 7 vs CentOS 6的不同(1)桌面系统[CentOS6] GNOME 2.x[CentOS7] GNOME 3.x(GNOME ...