一点笔记:java疑点观看

对java的疑点笔记

java特性

a 平台无关性(跨平台,一次编译,处处运行)
b GC(自动处理,不必像c++需要手动释放堆内存)
c 语言特性 (泛型、反射、Lambda表达式、、、)
d 面向对象(封装、继承、多态)
e 类库
f 异常处理

Compile one,Run Anywhere 如何实现?

编译期,javac指令,编译源码生成字节码,并存入对应的.class文件中
主要原因:java提供了各种平台的虚拟机,jvm解析字节码转换成特定平台的执行指令,eg:JVM For Linux,JVM For Win ,JVM For IOS

实现过程:  java源码首先被编译成字节码,再由不同平台的jvm进行解析,Java语言在不同的平台上运行时不需要进行重新编译,Java虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令。

java的反射

java反射机制实在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

JVM架构(组成)

JVM主要由:1、ClassLoader	2、Runtime Data Area	3、Execution Engine	4、Native Interface这四个部分组成。



关于ClassLoader

a 介绍:ClassLoader是java的核心组件,主要作用是从系统外部获得Class二进制数据流,负责通过将Class文件里的二进制数据流装载进系统,然后交给Java虚拟机进行连接、初始化等操作。
b ClassLoader的种类 (四者之间存在 父类委托机制),从高(父)到低(子)分别是: BootStrapClassLoader、	ExtClassLoader、AppClassLoader(加载程序所在目录)、自定义ClassLoader

类加载的方式

1、隐式加载:new
即隐式调用类加载器加载对应的类到jvm中
2、显示加载:
ClassLoader.forName,调用newInstance生成对象实例,该实例方法newInstance不支持传入参数

Java内存模型中堆和栈的区别–内存分配策略

区别:
a 管理方式: 栈自动释放,堆需要GC
b 空间大小: 栈比堆小
c 碎片相关: 栈产生的碎片远小于堆
d 分配方式:栈支持静态和动态分配,而堆仅支持动态分配
e 效率:栈的效率比堆高

堆与栈的联系:
引用对象、数组时,栈里定义变量保存堆中目标的首地址
堆空间最大的特点:实现动态分配(双向链表结构)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值