首页 > 系统相关 >面经-虚拟机-jvm内存结构

面经-虚拟机-jvm内存结构

时间:2022-08-25 15:28:21浏览次数:65  
标签:JVM 虚拟机 面经 线程 内存 jvm 方法

虚拟机-jvm内存结构

 

 

 

 

方法区:存放类加载时的方法

堆:存放new出来的对象

虚拟机栈:记录方法内的局部变量和方法参数等信息。

程序计数器:记录main线程执行中执行其他线程,回到主线程时从哪里开始执行。

本地方法栈:调用本地方法接口实现由操作系统实现的功能(本地库)

GC:内存不足时将不再使用的地方进行垃圾回收。

解释器:将字节码转换成CPU可以理解的机器码。

即时编译器(JIT):将频繁调用的热点代码翻译成机器代码并缓存起来,提高执行效率。

 

线程私有:程序计数器、虚拟机栈

线程共享:堆、方法区

 

哪些区域会有内存溢出

程序计数器不会有内存溢出,别的区域都有可能出现内存溢出情况。

出现OutOfMemoryError情况

1.堆内存耗尽:对象越来越多,并且一直在使用,不能被垃圾回收。

2.方法区内存耗尽:加载的类越来越多,很多框架都会在运行期间产生新的类。

3.虚拟机栈累积:每个线程最多占用1M内存,线程个数越来越多,又长时间运行不销毁时。

出现StackOverflowError情况

1.虚拟机栈内部:方法调用次数过多。

 

方法区、永久代、元空间的关系

方法区:JVM规范中定义的一块内存区域,用来存储类元数据,方法字节码,即时编译器需要的信息等。

永久代:Hotspot虚拟机对JVM规范的实现(1.8前)。

元空间:Hotspot虚拟机对JVM规范的实现(1.8后),使用本地内存作为这些信息的存储空间。



 

 

 

 

 

 

标签:JVM,虚拟机,面经,线程,内存,jvm,方法
From: https://www.cnblogs.com/lysboke/p/16624358.html

相关文章

  • 深入JVM虚拟机之什么是堆外内存
    堆内内存:1.一般情况下,一个新的对象创建在JVM内的堆上,并为其分配内存空间。堆空间由JVM垃圾回收器管理,称为堆内内存(on-heapmemory)2.虚拟机会定期对垃圾内存进行回收,有时......
  • 虚拟机磁盘空间已满,添加一块新的硬盘
    (0)添加硬盘前磁盘空间情况   (1)虚拟机关机,虚拟机设置,添加一块新的硬盘     (2)fdisk-l查看当前系统分区  (3)fdisk /dev/sdb依次输入n、p、1......
  • JVM基础连环问
    JVM基础连环问什么是堆吗?堆用于存放对象实例,是垃圾收集器管理的主要区域,因此也被称作GC堆。堆可以细分为:新生代(Eden空间、FromSurvivor、ToSurvivor空间)和老年代。堆......
  • 面经-并发-对ThreadLocal(线程隔离)的理解
    ThreadLocal作用:1.线程隔离。线程间:ThreadLocal可实现资源对象的线程隔离,让每个线程各用各的资源对象,避免争用引发的线程安全问题。2.资源共享。线程内:ThreadLocal同时实......
  • 面经-HashTable与ConcurrentHashMap比较
    HashTable与ConcurrentHashMap比较1.HashTable与ConcurrentHashMap都是线程安全的Map集合。2.HashTable与ConcurrentHashMap的键和值都不能为空。3.HashTable并发度低,整......
  • 面经-wait与sleep的比较
    共同点:wait(),wait(long),sleep(long)的效果都是让当前线程暂时放弃CPU的使用权,进入阻塞状态。不同点:方法归属不同sleep(long)是Thread的静态方法。wait,wait(long)都......
  • 面经-并发-线程状态
    java中的线程状态   线程状态_五种状态vs六种状态五种状态:操作系统层面分到CPU时间的:运行可以分到CPU时间的:就绪分不到CPU时间的:阻塞  Java中的Runnable......
  • ESXi/ESX 主机和兼容的虚拟机硬件版本列表 (2007240)
    下表中列出了ESXi/ESX主机和兼容的虚拟机硬件版本:注意:没有显示虚拟机硬件版本12的信息,是因为它只适用于VMware个人桌面产品Fusion/Workstation/Player。 ......
  • jvm中内存模型
    线程共享每个线程开启的时候都会划分几块内存空间,线程栈,程序计数器,本地方法栈。这几个内存空间是依附于线程的,线程结束后,这些空间也会释放所有线程共享除此之外还有堆,......
  • JVM类加载
    类加载Person.java文件javacPerson.java生产Person.classjavap-p-vPerson.class   进行类加载:是要将class文件转换为机器码 实现跨平台(不同的jdk)加载-......