乐字节Java|GC垃圾回收机制、package和import
本文接上一篇:乐字节Java|this关键字、static关键字、block块。本文是接着讲述JavaGC垃圾回收机制、package 和 import语句。
一、GC垃圾回收机制
GC全名:Garbage Collection 垃圾回收机制
程序员无权调用垃圾回收器。
程序员可以通过System.gc()。通知GC运行,但是JAVA规范并不能保证立刻运行。
finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用。

GC回收的三种基本方式
1、标记-清除
标记存活对象,清理其他垃圾对象(阴影为存活对象,空白为垃圾对象)。
优点:效率高
缺点:产生碎片,使内存分布碎片化,造成内存空间不连续。若出现大的对象,内存空间不连续则难以存取

2、标记-整理
标记存活对象,清除垃圾对象,对垃圾对象进行整理。
优点:没有碎片
缺点:效率低

3、复制
在内存中分配两块内存,将标记的存活对象复制到另一块内存当中,再将原内存的对象清除。
优点:效率高
缺点:浪费内存

二、package 和 import语句
为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间。
一般的命名为:公司域名倒写+功能名|模块名。
package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。
格式:package com.shsxt.test; → package pkg1[.pkg2[.pkg3…]];
Java编译器把包对应于文件系统的目录管理,package语句中,用’.’来指明包(目录)的层次,例如使用语句: package com.shsxt ,则该文件中所有的类位于.\com\shsxt 目录下
注意:不要定义与jdk相同的包,相同的类, 否则会引起很多你觉得莫名其妙的问题
如果一个类存在包名,则在使用该类时,必须使用全额限定名(简称全名或完整类名,com.shsxt.MyClass),编译器才能找到该类;也可以使用import在文件的开头引入要使用到的类。

不需要使用import的类有:
- 语言包 (java.lang)下的类
- 同包下的类
静态导入:
import语句不仅可以导入类,还增加了导入静态方法的功能。

三、总结
如果想将一个类放入包中,在类的源文件首行使用package
必须保证该类的class文件位于正确的目录下
另外的类想访问的话:
1、写全名
2、引入
1)、* 模糊匹配(会将该包下所有用到的类引入进来),会降低编译速度,但是不会影响运行速度。
2)、具体类名。
3、同包下的类不需要导入。
JDK中常用的包简单介绍:
①java.lang –语言包:语言中常用的功能,如String、Math、System、Integer、Thread…
②java.util – 工具包:提供一些实用的工具类,如 容器(List、Set、Map…),日期类
③java.io – 输入输出包:提供操作读取文件的相关类,如File、InputStream、OutputStrem…
④java.net – 网络包:操作远程资源的类,如InetSocketAddress、 DatagramPacket 、ServerSocket…
⑤java.sql – 数据库包:操作JDBC的类,Connection、Statement、ResultSet….
欢迎关注乐字节,Java相关技术文章干货持续更新。
乐字节Java|GC垃圾回收机制、package和import的更多相关文章
- 面试官,不要再问我“Java GC垃圾回收机制”了
Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底层原理,图文并茂,突破学习及面试瓶颈. 楔子-JVM内存结构补充 在上篇<JVM之内存结构详解> ...
- Android内存优化3 了解java GC 垃圾回收机制1
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...
- Android内存优化5 了解java GC 垃圾回收机制3
引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...
- JAVA gc垃圾回收机制
一.GC概要 JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方 ...
- Java GC - 垃圾回收机制
1.简介 对于Java developer来说,了解JVM GC工作原理能够帮助我们开发出更优秀的应用,同时在处理JVM瓶颈时能够更加自由.在最近一年的应用开发中能体会到这些知识带来的好处,并且让我们 ...
- 转载 JAVA gc垃圾回收机制
thanks:https://m.oschina.net/u/123553 一.GC概要 JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分 ...
- java GC垃圾回收机制G1、CMS
CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间.对于要求服务器响应速度的应用上,这种垃圾回收器非常适合.在启动JVM参数加上-XX:+UseConcMa ...
- Android内存优化4 了解java GC 垃圾回收机制2 GC执行finalize的过程
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...
- java面试题之----JVM架构和GC垃圾回收机制详解
JVM架构和GC垃圾回收机制详解 jvm,jre,jdk三者之间的关系 JRE (Java Run Environment):JRE包含了java底层的类库,该类库是由c/c++编写实现的 JDK ( ...
随机推荐
- qt动态库实现无边框窗体的消息处理 nativeEvent的使用
需求: 在动态库中创建一个窗口句柄,可以给外部调用,库的调用者,通过这个句柄发送消息到底层库,库里面可以实现对消息的处理 m_FHandle=AllocateHWnd(WndProcDllMsg); ...
- exam8.29
咕了好几篇后... 我终于开始重新写了 T1: 不会,没思路,暴搜还可能会(一开始我以为暴搜时间复杂度为$\Theta (mn ^ k)$) 于是码出了暴搜... 跑一遍$(4,4,5)$,然后... ...
- 【原创】go语言学习(二十二)网络编程
目录 TCP/IP协议介绍 GO快速实现TCP服务端 GO快速实现TCP客户端 UDP协议介绍 UDP编程实例 TCP/IP协议介绍 1.互联网起源 A. 起源于美国五角大楼,它的前身是美国国防部高级 ...
- 二分算法题目训练(一)——Shell Pyramid详解
HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮 ...
- 问题:python3 使用beautifulSoup时,出错UnicodeDecodeError: 'gbk' codec …….
想将html文件转为纯文本,用Python3调用beautifulSoup 超简单的代码一直出错,用于打开本地文件: from bs4 import BeautifulSoup file = open ...
- [Python]闭包的理解和使用
闭包广泛使用在函数式编程语言中,虽然不是很容易理解,但是又不得不理解. 闭包是什么? 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包.闭包可以 ...
- zabbix(9)iterms(监控项)
一.iterms key 监控项按参数来分有两种:带参数和不带参 按定义来分:zabbix自带和用户自定义 1)Key可以带参数,该参数为一个数组列表,可以同时传递多个参数,Key的格式如下: 既Ke ...
- Thingsboard学习之二安装Docker和Docker-Compose
安装系统更新系统,参考<Thingsboard学习之一CentOS安装系统更新> 尝试更新系统 yum update 增加一个用户并设置密码,并将用户增加到管理员 # 添加用户(可选) s ...
- chrome dev
chrome://plugins 为什么无法打开? Chrome插件问答 2018-03-02 13:34 最后又很多网友在我们 chrome插件 网反应说chrome://plugins 无 ...
- python操作excel实用脚本
import xlrd data = xlrd.open_workbook('/home/ppe/workspace/pythonwp/tianranqi_org.xls') table = data ...