这一块还没有深入了解,不敢误人子弟。

我知道的,虚拟机在运行的时候,会预先加载一个常用的class,比如java.lang包下面的。

至于你在程序中自己引用的class文件/jar包之类的,是有一个加载过程的。

当虚拟机需要一个class文件,他会调用默认的classLoader.loadClass()去加载,这个方法首先在已经加载的class中查找,找得到当然返回,找不到则交给父加载器。层层查找没有之后,classLoader会调用findClass方法去文件中加载。

protected Class> loadClass(String name, boolean resolve)

throws ClassNotFoundException

{

synchronized (getClassLoadingLock(name)) {

// First, check if the class has already been loaded

Class> c = findLoadedClass(name);

if (c == null) {

long t0 = System.nanoTime();

try {

if (parent != null) {

c = parent.loadClass(name, false);

} else {

c = findBootstrapClassOrNull(name);

}

} catch (ClassNotFoundException e) {

// ClassNotFoundException thrown if class not found

// from the non-null parent class loader

}

if (c == null) {

// If still not found, then invoke findClass in order

// to find the class.

long t1 = System.nanoTime();

c = findClass(name);

// this is the defining class loader; record the stats

sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);

sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);

sun.misc.PerfCounter.getFindClasses().increment();

}

}

if (resolve) {

resolveClass(c);

}

return c;

}

导入Java文件还是class文件_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...相关推荐

  1. java简述对象的组合_Java程序运行和对象创建过程简述

    Java中一个对象创建分为两个步骤: 加载类,创建对象. 加载类是将所写的程序.java文件编译生成的.class文件加载到内存中,保证了对象创建的预置环境.类加载完毕后才可以创建该类的对象. 第一步 ...

  2. java生成cmd jar包_Java程序运行机制及cmd编译运行探究(二) cmd编译运行Java程序并打成jar包...

    目标:写一个RandomUtils.java工具类,返回一个随机数,并把这个类的字节码文件打成jar包 在Java运行机制及cmd编译运行探究(一)准备工作一文中,我总结了一部分要用到的cmd及编译运 ...

  3. java导出jar包后,程序运行时读取图片、音乐资源文件

    java导出jar包后,程序运行时读取图片.音乐资源文件 运行时程序就可以把图片.音乐资源加载进入了 start jre/bin/java -jar 名称.jar

  4. java能够运行的原理_JAVA程序运行原理分析(一)

    作为JAVA的开发人员,需要知道JAVA是如何运行的,这个需要好好思考下. (一)class文件内容 class文件包含JAVA程序执行的字节码,也就是说程序的执行是通过class里面的内容进行执行的 ...

  5. java run里面定义变量_Java程序员50多道最热门的多线程和并发面试题(答案解析)...

    下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...

  6. java 程序运行出错_java 程序运行错误怎么办?

    展开全部 看是发生了什么错误,大多数错误都可以通过改写原编码来解决. 程序的错误可以抽象分为三32313133353236313431303231363533e78988e69d83313333656 ...

  7. java 与操作系统底层交互_java程序员需要知道的底层知识(四)

    笔记开始 1. 进程 进程:就是一个程序运行起来的状态,进程是操作系统用来分配资源的基本单位,分配资源指的是独立的内存空间 僵尸进程:当A进程fork(底层调的clone)了一个B进程,那么A叫做B的 ...

  8. java运行慢_Java程序运行一段时间后越来越慢

    我有一个java程序,它是典型的机器学习算法,通过一些方程来更新某些参数的值: for (int iter=0; iter<1000; iter++) { // 1. Create many t ...

  9. java计算文件里的总分_java程序读取txt文件并计算总分 求帮忙

    展开全部 你这个不难,就是字符串处理, 你的文件修改下:每行两两元素636f70793231313335323631343130323136353331333332636336之间的空格用一个,如果超 ...

最新文章

  1. html元素嵌套与并列,HTML的元素嵌套规则
  2. 51nod1347(简单逻辑)
  3. python中定制类_python定制类__str__(实例详解)
  4. golang的一款cms内容管理系统
  5. 导弹如何自动追踪目标?这其实是个数学问题
  6. 【Flink】RuntimeException: Row arity of from does not match serializers
  7. 论文阅读:Spatial context-aware network for salient object detection
  8. Jmeter分布式测试-远程调用
  9. 高通MTK 安卓手机 手机更改SN 序列号 识别码 教程视频
  10. 配置SMTP发信认证
  11. stm32学习笔记——通用计时器基本原理
  12. 说一下我对并发数、吞吐量的理解
  13. 超灵敏磁传感解决方案助力汽车产业发展
  14. windows彻底卸载python的方法
  15. java 如何抛异常_如何在Java中抛出异常?
  16. hiredis查询失败时出现key丢失问题定位
  17. Mac 安装 pip 看这里就够了,pip、pip2、pip3 再也不懵了
  18. 用Python软件画螺旋式正方形
  19. 移动安全之角逐,无人可赖以苟安
  20. 现代科技概论_现代科技概论课程:物理与艺术1

热门文章

  1. CMake编译Makefile
  2. 高考来了_大数据能做些什么?
  3. qq空间等闪动的文字怎么做?
  4. undefined reference to `libiconv_open 无法编译PHP
  5. OWA修改密码注意事项
  6. PHP MongoDB 扩展安装配置
  7. OAF页面查找数据源
  8. Table-values parameter(TVP)系列之一:在T-SQL中创建和使用TVP
  9. 一个不错的安全评估站点vulnerabilityassessment.co.uk
  10. ToolBarManager可任意选择你想要的菜单