这一节打算从“方法调用”的主题进行分析。 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不设计方法内部的具体运行过程。 一、概念 解析调用:所有方法调用中的目标方法在Class文件里都是一个常量池中的引用,在类加载的解析阶段,会将其中一部分符号 ...
分类:
编程语言 时间:
2019-08-21 00:35:51
阅读次数:
118
Java 208道面试题及部分答案 恢复内容开始 一、Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK是java开发工具包, ...
分类:
其他好文 时间:
2019-08-20 19:10:21
阅读次数:
84
1、 JVM的内存模型 a) Java虚拟机的内存空间分为五个部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区 b) 程序计数器:程序计数器中存放的是当前线程正在执行的字节码指令的地址。如果当前线程执行的一个本地方法,那么当前的程序计数器为空。 i. 字节码解释器通过程序计数器来依次读取指 ...
分类:
其他好文 时间:
2019-08-19 13:00:34
阅读次数:
59
1.java中产生并发问题的主要原因有哪三个? 原子性、可见性和有序性 2.什么是java内存模型? java虚拟机规范中用来屏蔽掉各种硬件和操作系统内存访问差异,java内存模型的主要目标是定义程序中各个变量的访问规则。 3.java中除了volatile关键字可以实现内存可见性外还有哪些关键字可 ...
分类:
编程语言 时间:
2019-08-18 20:04:50
阅读次数:
123
Java所有异常类都是 Throwable的子类。它包括Java异常处理的两个重要子类:Error和Exception. Error:Error及其子类用来描述Java运行系统中的内部错误以及资源耗尽的错误,是程序无法处理的错误,这类错误比较严重。这类的大多数错误与代码编写者执行的操作无关,如,运行 ...
分类:
编程语言 时间:
2019-08-17 22:33:23
阅读次数:
129
两个名词的对比 java内存模型 定义了线程和主内存之间的抽象关系,即Jvm在计算机内存中的工作方式 java内存区域 内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。 Java运行时数据区域 Java运行时数据区域主要可以分为五个区域: 1.程序计数器 2.Java虚拟机栈 3 ...
分类:
编程语言 时间:
2019-08-17 22:00:31
阅读次数:
94
Java虚拟机是如何加载Java类的? 这个问题也就是面试常问到的Java类加载机制。在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样。 tonight ! 我们把它映射到实战里,看看如何用代码说明这个流程。 ready! go! 在这之前 ...
分类:
编程语言 时间:
2019-08-16 00:33:46
阅读次数:
68
1. JVM架构图 Java虚拟机主要分为五大模块:类装载器子系统、运行时数据区、执行引擎、本地方法接口和垃圾收集模块。 2. JDK1.7内存模型-运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1-3为线程私有,4-5为线程共 ...
分类:
其他好文 时间:
2019-08-14 14:51:24
阅读次数:
159
####JAVA概念介绍 0. 面试: 1. 谈谈你对 Java 平台的理解 1. 对于“Java 是解释执行”这句话,这个说法不太准确。 * 我们开发的 Java 的源代码,首先通过Javac 编译成为字节码(bytecode),然后,在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码 ...
分类:
编程语言 时间:
2019-08-14 09:38:51
阅读次数:
106
在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。 其实要搞明白String.intern(),我总结了下面几条规则: 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(string ...
分类:
其他好文 时间:
2019-08-13 20:13:00
阅读次数:
83