前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你了解 JVM 类加载机制吗?

你了解 JVM 类加载机制吗?

作者头像
CSDN技术头条
发布2019-05-17 14:22:30
2970
发布2019-05-17 14:22:30
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

作为有理想有追求的程序员,对于 JVM 的了解和掌握是有必要的。然而在我们工作中一般并不会直接和 JVM 打交道,因此这块内容也显得较为陌生和神秘,像是空中楼阁。本文通过实例讲解的方式而不是泛泛的总结,将使你对 Java 类加载机制有相对深刻的理解和掌握。

以前遇到了一个挺有意思的题目,这可能是一道让许多人都会犯错的题,不瞒各位,我在第一次遇到到这个题目时也做错了,很容易掉进题目的陷阱,有的人可能已经见过,不管怎样一起来看看题目:

代码语言:javascript
复制
class SingleTon {
    private static SingleTon singleTon = new SingleTon();
    public static int count1;
    public static int count2 = 0;

    private SingleTon() {
        count1++;
        count2++;
    }

    public static SingleTon getInstance() {
        return singleTon;
    }
}

public class Test {
    public static void main(String[] args) {
        SingleTon singleTon = SingleTon.getInstance();
        System.out.println("count1=" + singleTon.count1);
        System.out.println("count2=" + singleTon.count2);
    }
}

看完题想想结果会是什么?可能有人会很轻松的回答出答案是 1 和 1,那恭喜你,你成功中了出题人所设下的陷阱,如果不是,那又是为什么呢?大家别急,我们再将其中的几行代码改变顺序如下:

代码语言:javascript
复制
    public static int count1;
    public static int count2 = 0;
    private static SingleTon singleTon = new SingleTon();

结果又不一样了,大家这里稍稍思考一下,为什么?原因就在于加载类时各个成员的加载顺序不同,这里其实涉及到类的加载初始化流程,我们暂且先不具体解释原因,我们来先介绍类的生命周期相关内容,对类的生命周期有了一定了解,理解这道题就很容易了。

本场 Chat 包含以下内容:

  • 类加载相关陷阱面试题
  • 类的生命周期
  • 类加载器机制
  • 类加载器命名空间
  • 线程上下文类加载器与 SPI

本场 Chat 适合有基础编程能力,渴望了解和掌握 Java 类加载相关内容的读者。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GitChat精品课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档