linkin大话面向对象--GC和jar包

  • GC

java的垃圾回机制是java语言的重要机制之一。当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中。当这块内存不再被任何变量引用时,这块内存就变成了垃圾,等待系统自动回收。一个对象在堆内存中运行,一共有3中状态:激活状态,去活状态,死亡状态。


值得注意的是:1,垃圾回收机制只负责回收堆内存中的对象,不会回收任何的物理资源(比如数据库连接)

2,程序无法精确的控制垃圾回收的运行,垃圾回收总是在合适的时候来进行。

3,垃圾回收机制在回收任何对象前,总会先调用它的finalize方法,这个方法可能使得该对象重新复活,取消垃圾回收。

      既然说垃圾回收机制是随机的,那么我们想人为的控制垃圾回收,就强制系统垃圾回收。

public class Linkin {

    public static void main(String[] args) {
        for (int a = 0; a <= 5; a++) {
            new Linkin();
            System.out.println("帝王注定孤独,江山与他何干...");
            //如果没有下面2行代码,可以看到系统退出,都没有调用下面的finalize方法。
            //System.gc();这2行代码作用完全一样,强制系统进行进行垃圾回收机制。
            Runtime.getRuntime().gc();
        }
    }

    @Override
    //关于这个方法多说几句:1,永远不要主动的调用对象的这个方法,这个方法应该交给垃圾回收机制来完成。
    //2,这个方法什么时候被调用,是否被调用都具有不确定性。不要把这个方法当做一定执行的方法。
    //3,当jvm执行去活对象的这个方法时,可能使得这个对象重新变成激活状态
    //4,jvm执行这个方法出现了异常,垃圾回收机制也不会报告异常,而是继续执行。
    public void finalize() {
        System.out.println("系统在进行垃圾回收...");
    }
}


  • jar
jar文件全称是java archive file:java档案文件。jar文件是一种压缩文件,与我们常见的zip压缩文件兼容。区别就是多了一个META-INF/MANIFEST.MF文件,这个清单文件是在生成jar文件时系统自动创建的。使用jar包有以下几个好处:安全,加快下载速度,压缩,可移植性。



当一个应用程序开发成功后,大致上有3种发布方式:
1;使用平台相关的编译器将整个应用编译成与平台无关的可执行性文件。
2;为整个应用编译一个批处理文件。
3;将一个应用程序制作成可执行的jar包,通过jar包来发布应用。这种最常用了。。。


初次之外,java还可能生成2种压缩包:war包和ear包。其中war包文件是web archive file,对应一个web应用文档;ear文件时enterprise archive file,对应一个企业应用文档。上面的3中包其实都一样,都是用来发布应用程序,只是文件的后缀不一样而已。我是做web的,所以打出来的包都是ear包。

 

下面是ear包结构:
 
打开里面的war包:


我一般使用好压来操作jar包,选择的压缩文件方式是ZIP。当然也可以用WinRAR来操作jar包,WinRAR还可以支持搜索功能呢。





























原文地址:https://www.cnblogs.com/LinkinPark/p/5233154.html