Java基础知识—平台无关性以及JVM内存结构

一、谈谈你对java的理解

(1)平台无关性:一次编译,到处运行

javac编译-》生成字节码class文件(二进制的,可使用javap进行反编译查看具体内容)-》字节码内容加载进内存(机器可执行的机器码)

所谓的字节码,就是 Java 程序经过编译之类产生的.class 文件,字节码能够被虚拟机识别,从而实现 Java 程序的跨平台性。

Java 程序从源代码到运行主要有三步:

  • 编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class)
  • 解释:虚拟机执行 Java 字节码,将字节码翻译成机器能识别的机器码
  • 执行:对应的机器执行二进制机器码

只需要把 Java 程序编译成 Java 虚拟机能识别的 Java 字节码,不同的平台安装对应的 Java 虚拟机,这样就可以可以实现 Java 语言的平台无关性。

(2)GC垃圾处理机制

(3)语言特性

(4)面向对象:封装、继承、多态

(5)类库

(6)异常处理

二、jvm如何加载.class文件

JVM结构:四个部分

(1)class loader  :依据特定格式加载class到内存

Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。

(2)Native Iterface:本地接口,融合不同开发语言为java所用

(3)Execution Engine:对命令进行解析

(4)Runtime Data Area:JVM内存空间模型

三、jvm三大性能调优参数

-Xss:规定了每个线程虚拟机栈(堆栈)的大小

-Xms:堆的初始值

-Xmx:堆能达到的最大值

四、java内存模型中的堆和栈的区别-内存分配策略

静态存储:编译时确定每个数据目标在运行时的存储空间需求

栈式存储:数据区需求在编译时未知,运行时模块入口前确定。

堆式存储:编译时或运行时模块入口都无法确定,动态分配。

五、java内存模型中堆和栈的区别和联系

(1)联系:引用对象、数组时,栈里定义变量保存堆中目标首地址。

 

(2)区别:

管理方式:栈自动释放,堆需要GC

空间大小:栈比堆小

碎片相关:栈产生的碎片远远小于堆

分配方式:栈支持静态和动态分配,而堆仅支持动态分配

效率:栈效率比堆高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值