导入Java文件还是class文件_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...
这一块还没有深入了解,不敢误人子弟。
我知道的,虚拟机在运行的时候,会预先加载一个常用的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文件都加载到内存吗?还是用的什么加载什么?...相关推荐
- java简述对象的组合_Java程序运行和对象创建过程简述
Java中一个对象创建分为两个步骤: 加载类,创建对象. 加载类是将所写的程序.java文件编译生成的.class文件加载到内存中,保证了对象创建的预置环境.类加载完毕后才可以创建该类的对象. 第一步 ...
- java生成cmd jar包_Java程序运行机制及cmd编译运行探究(二) cmd编译运行Java程序并打成jar包...
目标:写一个RandomUtils.java工具类,返回一个随机数,并把这个类的字节码文件打成jar包 在Java运行机制及cmd编译运行探究(一)准备工作一文中,我总结了一部分要用到的cmd及编译运 ...
- java导出jar包后,程序运行时读取图片、音乐资源文件
java导出jar包后,程序运行时读取图片.音乐资源文件 运行时程序就可以把图片.音乐资源加载进入了 start jre/bin/java -jar 名称.jar
- java能够运行的原理_JAVA程序运行原理分析(一)
作为JAVA的开发人员,需要知道JAVA是如何运行的,这个需要好好思考下. (一)class文件内容 class文件包含JAVA程序执行的字节码,也就是说程序的执行是通过class里面的内容进行执行的 ...
- java run里面定义变量_Java程序员50多道最热门的多线程和并发面试题(答案解析)...
下面是Java程序员相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
- java 程序运行出错_java 程序运行错误怎么办?
展开全部 看是发生了什么错误,大多数错误都可以通过改写原编码来解决. 程序的错误可以抽象分为三32313133353236313431303231363533e78988e69d83313333656 ...
- java 与操作系统底层交互_java程序员需要知道的底层知识(四)
笔记开始 1. 进程 进程:就是一个程序运行起来的状态,进程是操作系统用来分配资源的基本单位,分配资源指的是独立的内存空间 僵尸进程:当A进程fork(底层调的clone)了一个B进程,那么A叫做B的 ...
- java运行慢_Java程序运行一段时间后越来越慢
我有一个java程序,它是典型的机器学习算法,通过一些方程来更新某些参数的值: for (int iter=0; iter<1000; iter++) { // 1. Create many t ...
- java计算文件里的总分_java程序读取txt文件并计算总分 求帮忙
展开全部 你这个不难,就是字符串处理, 你的文件修改下:每行两两元素636f70793231313335323631343130323136353331333332636336之间的空格用一个,如果超 ...
最新文章
- html元素嵌套与并列,HTML的元素嵌套规则
- 51nod1347(简单逻辑)
- python中定制类_python定制类__str__(实例详解)
- golang的一款cms内容管理系统
- 导弹如何自动追踪目标?这其实是个数学问题
- 【Flink】RuntimeException: Row arity of from does not match serializers
- 论文阅读:Spatial context-aware network for salient object detection
- Jmeter分布式测试-远程调用
- 高通MTK 安卓手机 手机更改SN 序列号 识别码 教程视频
- 配置SMTP发信认证
- stm32学习笔记——通用计时器基本原理
- 说一下我对并发数、吞吐量的理解
- 超灵敏磁传感解决方案助力汽车产业发展
- windows彻底卸载python的方法
- java 如何抛异常_如何在Java中抛出异常?
- hiredis查询失败时出现key丢失问题定位
- Mac 安装 pip 看这里就够了,pip、pip2、pip3 再也不懵了
- 用Python软件画螺旋式正方形
- 移动安全之角逐,无人可赖以苟安
- 现代科技概论_现代科技概论课程:物理与艺术1