JVM
来源:互联网 发布:js根据当前时间年月日 编辑:程序博客网 时间:2024/06/08 19:14
纯粹是个人学习总结,如有不对的地方请吐槽。
java虚拟机
在操作静态变量方法的时候会先初始化该类
在操作常量时不需要初始化该类,会在编译时将常量放到常量池中。
垃圾回收:
会先标记该对象是否可以回收,然后再遍历判断是否执行finalize()方法
如果需要执行finalize()方法就会调用finalize()方法,但是回收时不会等到finalize()执行完成再回收。
并且finalize()只执行一次
判断finalize()执行的条件:是否重写finalize()方法
对象耍流氓
@Overrideprotected void finalize() throws Throwable { super.finalize(); System.out.println("嗯,已经执行了finalize()方法了"); Test.self = this;}private static void save() throws Exception { self = null; System.gc(); //Finalizer线程优先级比较低,我们稍等一小会 Thread.sleep(500); if (self != null) { System.out.println("我还活着"); } else { System.out.println("啊哦,我挂了"); }}
打印结果:
嗯,已经执行了finalize()方法了
我还活着
啊哦,我挂了
同样是执行save方法,第一次对象成功拯救了自己,第二次却无法拯救自己,finalize方法也仅仅只被执行了一次而已!
如有雷同并且你介意请联系我
阅读全文
0 0
- JVM
- jvm
- JVM
- JVM
- JVM
- JVM
- jvm
- jvm
- jvm
- JVM
- JVM
- jvm
- JVM
- JVM
- jvm
- jvm
- jvm
- JVM
- 集合总结
- 线程学习
- 微信文章抓取
- Serializable和Externalizable
- 23种设计模式
- JVM
- sbt/maven构建scala项目配置文件
- 为什么PHP开发对企业是有效率的?
- C# 如何实现热键注册 RegisterHotKey
- android——EvenBus3.0详细使用指南
- JAVA线程池(ThreadPoolExecutor)原理分析与使用
- 一周搞定9轴MPU9250(无华)(3)--数据采集
- C#WindowsMediaPlayer的播放模式实现(单曲循环、列表循环、随机播放)
- let's shell---tcpdump命令使用参数详解