Java面面观:JVM动态加载

Java面面观:JVM动态加载

精选文章moguli202024-12-27 17:50:2319A+A-

一、概念

JVM在执行java程序时,并不是把程序所用到的class都一次性地加载到内存中,而是按需加载class(当使用到尚未被加载的class时,才会去加载它)

二、典型应用

正因为JVM动态加载class的特性,我们才能够在java程序运行时根据条件来控制加载不同的实现类。例如Commons Logging 会优先使用Log4j,只有当Log4j不存在时,才使用JDK Logging。

	//Commons Logging优先使用log4j
  LogFactory factory = null;
	if(isClassPresent("org.apache.logging.log4j.Logger")) {
			factory = createLog4j();
	} else {
			factory = createJdkLog();
	}
  
  boolean isClassPresent(String className) {
		try {
			Class.forName(className);
			return true;
		} catch(Exception e) {
			return false;
		}
	}

所以,这也是为什么只要我们把Log4j放到classpath中去,Commons Logging就会自动使用Log4j。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2