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
1;使用平台相关的编译器将整个应用编译成与平台无关的可执行性文件。
2;为整个应用编译一个批处理文件。
3;将一个应用程序制作成可执行的jar包,通过jar包来发布应用。这种最常用了。。。
初次之外,java还可能生成2种压缩包:war包和ear包。其中war包文件是web archive file,对应一个web应用文档;ear文件时enterprise archive file,对应一个企业应用文档。上面的3中包其实都一样,都是用来发布应用程序,只是文件的后缀不一样而已。我是做web的,所以打出来的包都是ear包。
我一般使用好压来操作jar包,选择的压缩文件方式是ZIP。当然也可以用WinRAR来操作jar包,WinRAR还可以支持搜索功能呢。
linkin大话面向对象--GC和jar包的更多相关文章
- linkin大话面向对象--包和导入
我们现在的代码都扔在一个文件夹里面,比如以后我们做项目,是不是有可能有非常非常多的代码,那我就希望把不同功能和模块的类方便管理,放到不同的文件夹下,引出包概念. 什么是包,就一个文件目录,为了处理重名 ...
- linkin大话面向对象--类和对象
我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静 ...
- linkin大话面向对象--闭包和回调
先来理解2个概念:闭包和回调 什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...
- linkin大话面向对象--内部类
内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...
- linkin大话面向对象--多态
java引用变量有2个类型,一个是编译时类型,一个是运行时类型: 编译时类型:声明的类型,把它看做是什么东西 运行时类型:真正的类型,实际上指的是什么东西 如果编译时类型和运行时类型不同,就出现多态. ...
- linkin大话面向对象--枚举
枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默 ...
- linkin大话面向对象--包装类
Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 基本数据类型 包装类 byte Byte short Short int Int ...
- linkin大话面向对象--java关键字
java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract default null synchronized ...
- linkin大话面向对象--初始化块
java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可 ...
随机推荐
- (GO_GTD_2)基于OpenCV和QT,建立Android图像处理程序
一.综述 如何采集图片?在windows环境下,我们可以使用dshow,在linux下,也有ffmpeg等基础类库,再不济,opencv自带的videocapture也是提供了基础的支撑.那么 ...
- Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 高通secury boot过程
整理内容网盘地址: 链接:https://share.weiyun.com/79c3920b4f2097d93b719b3149a7f3f9 (密码:4jm9cx) 相关内容网站: http://bl ...
- 如何让一个DIV水平,垂直方向都居中于浏览器?
<style type="text/css"><!-- div {position:absolute;top:50%;left:50%;margin:-150px ...
- itoa函数,sprintf函数
itoa函数 itoa 为c语言的一个函数.itoa 函数是一个广泛应用的,从非标准扩展到标准的C语言.它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通 ...
- 2017ICPC/广西邀请赛1005(水)HDU6186
CS Course Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Kibana使用高德地图
Kibana使用高德地图 说明 目前Kibana默认自带的地图全部是英文,更换高德地图对地图汉化 修改配置 1.编辑kibana配置文件kibana.yml,最后面添加 tilemap.url: 'h ...
- python 元组学习
元组用tuple表示,用,分割开,和列表类似,但是没有排序修改等高级操作.简单地说就是终态的...... >>> tuple1 = (1,2,3)>>> type( ...
- C#面试题整理(1)
最近在看CLR VIA C#,发现了一些案例很适合来做面试题.特此整理: 1,System.Object里的GetType方法是否为虚函数?说出理由. 答案:不是,因为C#是一种类型安全的语言,如果覆 ...
- win处navicat直接导出的sql脚本导入Linux mysql报错问题
最近几天在把win上的项目的数据库转移到Ubuntu,于是第一件事就是从win处的navicat直接导出sql脚本,然后进入Ubuntu导入的时候会报错误,跳过错误继续执行导致数据库表的缺失. 跨平台 ...