JAVA编程思想学习笔记2-chap4-6-斗之气2段
1.foreach:只能用于数组与容器
2.this指针:内部有个指针指向自己
3.super指针:内部有个指针指向父类部分
4.方法存放于代码区:方法调用时,a.fun()可能会被转换为fun(a),以此将对象传递给函数,同时方法知道调用者是对象a
5.static方法:没有this指针
6.finalize():GC回收前先调用一次本方法,下次才进行内存回收,可以用于终结条件(如:判断文件是否安全关闭)
7.GC:找到存活对象
①引用计数:无法解决对象互相引用问题
②从堆栈或者静态存储区进行扫描:引用链--由于访问过的对象为活的,同时形成了树状结构,不会重复计算已引用对象,同时找到的对象必定存活,没有互相引用问题
8.GC:处理存活对象
①停止-复制:复制对象到另一个堆,并保持内存连续,未被复制的对象为垃圾(复制后引用需要修正)
缺点:①需要维护两个堆,造成资源浪费②程序稳定后,仍然需要复制,造成性能低
②标记-清扫:根据思路6-②,标记活对象,标记完,释放死对象,整理活对象,适用于垃圾较少的时刻(程序稳定)
③自适应、分代的、停止-复制、标记-清扫式垃圾回收器
JVM监视GC效率:效率低时候采用标记清扫,碎片多采用停止-复制
9.JIT编译器技术:将程序全部或部分编译为本地机器码(本为JVM功能)以增加效率
10.对象创建过程:
①定位class文件;
②载入class文件,创建Class对象,执行静态初始化块或者域静态初始化;---证明静态成员内存并不是位于堆区
③在堆上分配存储空间;
④内存清0;
⑤按域声明顺序执行域初始化动作;
⑥执行构造器;
11.classpath:指定类目录
12.可变参数列表:参数类型需要统一
13.java会为每个class生成一个.class文件
14.package与import:对命名空间进行切割
15.通过import不同的package,可以实现条件编译,如开发与测试版本
16.单例模式(此处恶汉式为线程安全)
①只有一个默认构造器,并且为private
②类有一个static对象
③提供getInstance方法,返回此对象的引用
public class SingleObject { //创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject(); //让构造函数为 private,这样该类就不会被实例化
private SingleObject(){} //获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
} public void showMessage(){
System.out.println("Hello World!");
}
}
public class SingletonPatternDemo {
public static void main(String[] args) { //不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject(); //获取唯一可用的对象
SingleObject object = SingleObject.getInstance(); //显示消息
object.showMessage();
}
}
懒汉式线程安全版本见:
https://blog.csdn.net/cselmu9/article/details/51366946
最新文章
- SQL Server 数据库分离与附加
- Android中top命令字段含义
- HTML 标准属性 和 事件属性
- 再议extern和include的作用
- g++安装 Gnome/Gtk+开发库 的 环境安装(安装widgets的必要条件)
- 对C++ Primer的10.3.9单词转换的思考
- Java基础加强学习笔记(二)
- Git学习笔记01--初始化设置
- Objective-C中的property
- Sping Boot入门到实战之实战篇(一):实现自定义Spring Boot Starter——阿里云消息队列服务Starter
- 从fastjson多层泛型嵌套解析,看jdk泛型推断
- 推荐!PlayGround:可视化神经网络
- Android——Service介绍与例子
- Android Framework源码反编译
- 根域名服务器(root DNS Servers)会被DDoS打垮么?
- tomcat localhost
- 使用layui 和 jquery 问题小结
- linux下的shell操作mysql
- Confluence 6 导入 Active Directory 服务器证书 - Mac OS X
- HTML图片热区map area的用法
热门文章
- 洛谷P1086 花生采摘【模拟】
- poj3613 Cow Relays【好题】【最短路】【快速幂】
- 使用djiango 创建网站
- new malloc 区别
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?
- EF Code First模型约束
- charles4.2下载与破解方法以及配置https
- LeetCode 762 Prime Number of Set Bits in Binary Representation 解题报告
- nodejs prefix(全局)和cache(缓存)windows下设置
- java 网络编程(三)简单的即时通讯(UDP传输)