【9.28 Java后端 20问】

JVM

复习
  1. 什么是运行时数据区
  2. 什么是方法区,JVM堆,程序计数器,JVM栈
基础学习
  1. 什么是本地方法栈
    • 本地方法栈中存放的主要是Native修饰的C和C++的方法代码
    • 本地方法栈和JVM栈的内存模型一致
  2. 什么是直接内存
    • 直接内存不是JVM运行时内存也不是JVM中定义的内存,但是收到主机内存大小的限制和内存寻址范围的限制
    • 可以通过Java(new Input/ouput)中的DirectByteBuffer来申请一个堆外的直接内存
    • 直接内存的申请空间的初始化消耗的性能比在堆中申请消耗的性能多,但是直接内存的读写IO性能大于在堆中的读写,避免了在本地方法区和JVM堆中的数据复制
  3. 说一说什么时JVM执行引擎
    • 在虚拟机中通过JVM执行引擎将字节码文件转化为机器码然后进行执行
  4. 什么是垃圾回收系统
    • 在程序运行过程中会产生内存的垃圾(没有引用被的对象),因此需要在程序运行时进行不断地清理
  5. 什么是GC
    • GC是JVM的垃圾回收机制,主要负责JVM堆中内存垃圾的处理
    • GC是JVM自动运行的,可以手动使用System.gc()来建议执行gc,但是无法强制系统执行gc
  6. JVM堆是如何划分的
    • JVM堆分为老年代(2/3)和新生代(1/3),分代是为了根据对象的存活特点来使用对应的垃圾回收算法
    • 老年代的特点是,每一次标记产生的垃圾较少,新生代的特点是每一次标记产生大量的垃圾对象,为了增加内存的利用率以及减少内存碎片,分别使用标记-清楚方法和复制算法。
    • 新生代被分为eden(8/10)和两个survivor(1/10)区域,每一次都会使用eden和一个survivor区域,剩下的一个区域用于复制法垃圾回收(实际使用了90%的内存)
  7. 对象的代如何判断和划分
    • 对于新初始化的对象,如果是大对象,直接分配到老年区中,否则分配到年轻代的eden区域中
    • 如果eden或者old中的内存不足分配,那么就会触发一次GC,老年代使用标志-清除,新生代使用复制,将所有的对象复制到没有使用的survivor中,如果本来就在另一个survivor区域,那么就增加对象的代数,当代数达到一定的大小之后就会移动到老年区域
  8. 为什么要这样划分区域
    • 这样是根据对象的存活时间推断对象的存活特点,然后根据存活特点选择对应的垃圾回收算法
    • 对于产生的对象,存活率较低,可以使用复制法来管理对象
    • 对于存活了比较久的对象,可以推测其存活可能新更高,存活率更高,因此可以使用标记-清楚法来回收处理

Linux

基础学习
  1. 什么是进程间通讯
    • 进程间通讯(IPC-inter process communication)指多个进程之间的相互通信,消息发送
  2. 进程之间的通信目的
    • 数据传输:一个进程需要向另一个进程传输数据
    • 通知事件:一个进程需要向另一个进程或者一组进程发送一系列消息,从而通知某些事件的发生
    • 资源共享:多个进程共享资源
    • 进程控制:一个进程需要控制另一个进程的执行,需要对进程的异常和陷入进行拦截,并且掌握进程的运行状态
  3. 进程之间的通讯分类
    • 管道:命名管道,匿名管道
    • System V IPC:消息队列,共享内存,信号量
    • POSIX IPC:消息队列,共享内存,信号量,互斥量,条件变量,读写锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值