• 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. adb 获取Android手机信息命令(2)

    #Android命令 #获取手机名称 GET_PHONE_NAME = 'adb shell getprop ro.product.model' #获取手机版本 GET_PHONE_VERSION = ...

  2. PHP正在进行时-字符串动态插入变量

    在PHP中,一般用双引号或者单引号将字符串括起来. echo "张三李四王五叫上赵六一起去'喝酒'". 如果要动态将将数据插入到字符串中,我们除了使用.号拼接,还可以通过使用{}来 ...

  3. MySQL的insert ignore与replace into不同

    以前从来没有接触过replace into这个语法,但是却看到很多人都在使用这个语法,并且应用在很多生产环境中,于是我也去学习了一下repalce into的用法. 关于replace 一句话:正常情 ...

  4. 【转载】MySQL · 性能优化· InnoDB buffer pool flush策略漫谈

    背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数个内存块加上一组控制结构体对象组成.内存块的个数取决于buffer pool inst ...

  5. 腾讯windows系统服务器

    今天用腾讯的服务器搭建起了自己的博客,先看主页效果...简单的ui设计,主要就是要上服务器看看.    说说服务器的搭建: 1.卖,进腾讯云,自己对应的买操作系统的就可以的啦.具体的链接: https ...

  6. springboot(十七):使用Spring Boot上传文件

    上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spring Boot上传文件的小案例. 1.pom包配置 我们使用Spring Boot最新版本1.5.9. ...

  7. Linux系统下安装jdbc与tomcat

    一.下载Linux版本的jdbc与tomcat 1.1 下载Linux版本的jdbc: 1.1.1 1.1.2 1.1.3 在进行1.1.3操作之前得先勾选我同意协议 1.1.4 下载完成 1.2下载 ...

  8. Eclipse安装JD-Eclipse反编译插件成功看源码

    Eclipse安装JD-Eclipse反编译插件 转载 2017年12月24日 15:19:27   http://heavengate.blog.163.com/blog/static/202381 ...

  9. Linux 离线安装Rubygems详解

    很多时候我们会发现,真实的生成环境很多都没有外网,只有内网环境,这个时候我们又需要安装RubyGems,则不能提供yum命令进行在线安装了,这个时候我们就需要下载安装包进行离线安装.本文主要简单介绍如 ...

  10. VIM 文件搜索与替换

    文件内搜索与替换 :[range]s/pattern/string/[c,e,g,i] 例如: :%s/oldword/newword/cg //对文本中全部匹配进行替换 :m,ns/oldword/ ...