VM一般分为JVM规范和JVM实现JVM和JDK的区别JRE=JVM+Java标准库JDK=JRE+开发、调试和诊断工具的定义是什么字节码的runtimedataarea中的runtimedataarea:Java虚拟机在Java程序执行过程中,将自己管理的内存划分为几个不同的数据区。什么是堆内存?堆中包括哪些部分?堆是JVM最大的内存区域。我们申请的对象几乎都存储在那个堆中。为了方便GC模块分配和回收对象,堆空间可以分为:新生代和老年代刚刚创建的对象会放在新生代,经过多次垃圾回收后会放在老年代一代。新创建的对象将被放置在伊甸园区域。如果Eden区空间满了,就会触发垃圾回收,将对象复制到S0。下次满了就复制到S1,S0再复制到S1。一般来说,如果S区装不下,就会放在老年代。一般情况下,需要15次垃圾回收才会被放到老年代。什么是内存泄漏,它与内存溢出有什么关系?没有适时释放占用的内存java训练。未使用但未释放的内存,称为内存泄漏和内存溢出的关系:如果内存泄漏问题严重,久而久之肯定会导致内存溢出。Java中有四种垃圾收集器1.SerialGarbageCollector2.ParallelGarbageCollector3.CMSGarbageCollector4.G1GarbageCollector,它是多线程的,指的是使用多个GC工作线程来进行垃圾收集并行,可以充分利用CPU的能力,缩短垃圾回收的停顿时间。执行GC工作G1是垃圾优先级,垃圾多的先清理。什么是STW?什么是安全点?什么是安全区?在执行GC之前需要暂停所有应用程序线程,这称为STW(GC暂停)。类加载和类加载器类加载是类从加载到Java虚拟机内存到从内存中卸载的过程。生命周期经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备和解析统称为连接。虚拟机在加载阶段需要完成三件事:1.通过一个类的全限定名获取定义这个类的二进制字节流2.在方法中将这个字节流表示的静态存储结构转换为运行时数据area结构3.在内存中生成一个代表这个类的java.lang.Class对象。这个方法区作为所有数据的访问入口,第一步会在Java虚拟机之外实现,让程序自己决定如何获取需要的类,这个动作叫做“类加载器”什么是双亲委派机制?效果如何?双亲委托机制是属于类加载的一种机制。在加载之前,它会委托给它的父加载器加载。如果父加载器失败,它会自己加载它。可以避免类的重复加载,保证Java核心的安全性和稳定性。用过哪些JVM相关的命令工具?:输出函数传入的参数-l:输出应用类的完整包名或jar全名-v:列出jvm参数jstat是一个命令行工具,用于监控虚拟机的各种运行状态信息查看jvm进程13616情况文章来自编译
