`
jilong-liang
  • 浏览: 471535 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Java的GC的两种回收

    博客分类:
  • Java
GC 
阅读更多
public class GcTest {
	/**
	 * JDK的解释:
	 *  1)gc public void gc()运行垃圾回收器.调用此方法意味着 Java
	 * 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存.当控制从方法调用中返回时,
	 * 虚拟机已经尽最大努力回收了所有丢弃的对象.名称 gc 代表“垃圾回收器”.虚拟机根据需要在单独的线程中自动执
	 * 行回收过程,甚至不用显式调用 gc 方法. 方法 System.gc();是调用此方法的一种传统而便捷的方式. 
	 * 
	 * 2)public static void gc()运行垃圾回收器. 调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象
	 * 以便能够快速地重用这些对象当前占用的内存.当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间.
	 * 调用 System.gc() 实际上等效于调用: Runtime.getRuntime().gc()
	 * 
	 * 3)原理:将无用的对象空间进行释放, GC两种回收:自动回收,手工调用System.gc();方法实际上是调用System.gc();就相当于调用
	 *  了Runtime.getRuntime().gc();方法
	 */
	public static void main(String[] args) {

		try {
			System.out.println("GC");
		} catch (Exception e) {
			System.out.println(e.toString());
		} finally {
			Runtime rt = Runtime.getRuntime();
			rt.gc();// 手工回收
			/**
			 * 调用System.gc();其实就是调用Runtime.getRuntime().gc();回收 public static
			 * void gc() { Runtime.getRuntime().gc(); }
			 */
			System.gc();
			
			rt.totalMemory();//清除内存
			rt.freeMemory();//释放内存

		}
		/**
		 * Runtime与System的常用
		 */
		String name="C:/Windows/System32/crypt32.dll";
		// print when the program starts
		System.out.println("Program starting...");
		// load a library that is Windows/System32 folder
		System.out.println("Loading Library...");
		Runtime.getRuntime().load(name);
		System.out.println("Library Loaded.");
		
		//1.加载文件 
		System.load(name); 
		Runtime.getRuntime().load(name); 
		//2.加载库 
		System.loadLibrary(name); 
		Runtime.getRuntime().loadLibrary(name); 
		//3.快速复制数组 
		Object src=null,dest=null;
		int srcPos=0,destPos = 0,length=0;
		System.arraycopy(src, srcPos, dest, destPos, length);
		//4.取得系统的时间(毫秒数) 
		System.currentTimeMillis(); 
		//5.系统退出命令 
		System.exit(0); 
		Runtime.getRuntime().exit(0); 
		//6.垃圾回收 
		System.gc(); 
		Runtime.getRuntime().gc(); 
		//7.查看系统内存 
		Runtime.getRuntime().totalMemory(); 
		Runtime.getRuntime().maxMemory(); 
		Runtime.getRuntime().freeMemory(); 
		//8.运行系统程序 
		//如打开记事本 
		try {
			Runtime.getRuntime().exec("notepad") ;
			Runtime.getRuntime().exec("notepad").waitFor();//等待进程结束 
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		//9.使用关闭钩子 
		Runtime.getRuntime().addShutdownHook(new Thread());
	
	}
}

 

0
5
分享到:
评论

相关推荐

    JAVA垃圾回收机制

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...

    详细介绍Java垃圾回收机制

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...

    成为JavaGC专家上(3)—深入浅出Java垃圾回收机制

    本文是成为JavaGC专家系列文章的第三篇。在第一篇《》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响?在第二篇《》,...

    java堆内存详解.docx

    GC分为两种: Minor GC、Full GC(也叫做Major GC). Minor GC(简称GC) Minor GC是发生在新生代中的垃圾收集动作, 所采用的是复制算法。 GC一般为堆空间某个区发生了垃圾回收, 新生代(Young)几乎是所有java对象...

    java高级工程师、技术专家、架构师、项目经理面试宝典.rar

    注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收机制的两种算法,a、引用计数法 b、可达性分析算法 年轻代:是所有新对象产生的地方。 年老代:在年轻代中经历了N次回收后仍然...

    谈谈你对垃圾回收机制的了解?.docx

    主要有两种基本算法,引用计数算法,可达性分析。 引用计数算法:就是为对象添加一个引用计数,用于计数对象被引用的情况,如果计数为0,表示 对象可以被回收.(java并没有选择引用计数,因为存在一个基本难题,就是很难处理...

    Android内存回收机制

    Android内存回收机制策略 1、GC 2、lowmemorykiller ...按照喜欢有两种情况: OOM(Out Of Memory) : Android内存管理机制及优化方法(https://www.2cto.com/kf/201805/741791.html) 简言之,即应用占用的最大内存

    2008-2009年java面试题总结

    Java中的垃圾回收机制(System.gc和finaliz()); 10。sleeep和stop的区别; 11。notify和notifyAll的区别; 12。写代码来反转list; 13。抽象类和接口有什么不同; 14。常用的布局管理器有哪几种,那个会变形,哪个不会...

    java 面试题 总结

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...

    java面试宝典

    并考虑2 种回收机制。 11 38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 12 39、String s=new String(“xyz”);创建了几个String Object? 12 40、接口...

    Java面试宝典-经典

    并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 52 80、什么时候用assert。 53 81、java中会存在内存泄漏吗,请简单描述。 53 82...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    Java面试宝典2010版

    并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 52 80、什么时候用assert。 53 81、java中会存在内存泄漏吗,请简单描述。 53 82...

    java面试题大全(2012版)

    并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 52 80、什么时候用assert。 53 81、java中会存在内存泄漏吗,请简单描述。 53 82...

    Java中String类和IO流——学习小结

    字符串重新赋值不是修改,而是生成了一个新的字符串,原先的字符串依旧在内存中,但是引用变量不再指向它,过后原字符串因没被使用也会被Java GC机制回收。 1.2String类的比较方式 比较方式有两种 == 比较两个变量...

    java基础题 很全面

    5. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别? 23 简答题 23 1. 作用域public,protected,private,以及不写时的区别 23 2. BS与CS的联系与区别。 24 3. JDO是什么? 25 4. ...

    高级开发jvm面试题和答案.pdf

    面试高级开发的期间...java对象的三种状态 gc算法; gc种类: 简述一下内存溢出的原因,如何排查线上问题? 内存溢出的原因 引用在gc中回收状况 为什么gc停止所有进程; 有几种垃圾回收器; 描述一下CMS和G1的异同;

    最新Java面试宝典pdf版

    并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 52 80、什么时候用assert。 53 81、java中会存在内存泄漏吗,请简单描述。 53 82...

Global site tag (gtag.js) - Google Analytics