• 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还可以支持搜索功能呢。



























































linkin大话面向对象--GC和jar包的更多相关文章

  1. linkin大话面向对象--包和导入

    我们现在的代码都扔在一个文件夹里面,比如以后我们做项目,是不是有可能有非常非常多的代码,那我就希望把不同功能和模块的类方便管理,放到不同的文件夹下,引出包概念. 什么是包,就一个文件目录,为了处理重名 ...

  2. linkin大话面向对象--类和对象

    我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静 ...

  3. linkin大话面向对象--闭包和回调

      先来理解2个概念:闭包和回调   什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...

  4. linkin大话面向对象--内部类

    内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...

  5. linkin大话面向对象--多态

    java引用变量有2个类型,一个是编译时类型,一个是运行时类型: 编译时类型:声明的类型,把它看做是什么东西 运行时类型:真正的类型,实际上指的是什么东西 如果编译时类型和运行时类型不同,就出现多态. ...

  6. linkin大话面向对象--枚举

    枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默 ...

  7. linkin大话面向对象--包装类

    Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 基本数据类型 包装类 byte Byte short Short int Int ...

  8. linkin大话面向对象--java关键字

    java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract  default  null  synchronized ...

  9. linkin大话面向对象--初始化块

    java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可 ...

随机推荐

  1. findhex

    FindPattern(hD3D, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86&qu ...

  2. 部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)

    上节我们通过 kubeadm 在 k8s-master 上部署了 Kubernetes,本节安装 Pod 网络并添加 k8s-node1 和 k8s-node2,完成集群部署. 安装 Pod 网络 要 ...

  3. Js默认参数(多参数情况)

    js function example(settings) { var defaultSetting = { name: '小红', age: '30', sex: '女', phone: '1008 ...

  4. Java中的集合框架(中)

    Map和HashMap Map接口 1.Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value 2.Map中的键值对以Entry类型的对 ...

  5. Django模板中的数字自增

    Django框架的模板提供了{% for %} 标签来进行循环 例如对集合进行循环是比较简单的 {% for row in v1 %} <div>{{row.name}}</div& ...

  6. 记一次python的一些参数

    isdigit把字符串转化为整数 用法 if xx.isdigit(): xx=int(xx) index创建一个小原组,用法print(a.index(b),b)从0开始

  7. hdu_2087 剪花布条(kmp)

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. Trees on the level(指针法和非指针法构造二叉树)

    Trees on the level Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. tree(并查集)

    tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  10. day1 基础

    1.python 简介 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的 ...