1.简述JVM的运行原理?
Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语音编写并编译的程序可以运行在这个平台上。运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class)文件。 再然后字节码被装入内存,一旦字节码进入虚拟机,他就会被解释器执行,或者是被即使码发生器有选择的转换成机器码执行
2.简述JVM的运行原理?
JVM栈由堆,栈,本地方法栈,方法区等部分组成 堆:
所有通过new创建的对象的内存都在堆中分配,堆的大小可以通过-Xmx和-Xms来控制。 堆被划分为新生代和旧生代,新生代又被进一步分为Eden和Survivor区,最后Survivor由From Space 和To Space组成 栈:每个线程执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包括局部变量区和操作数栈,用于存在此次方法调用过程中的临时变量,参数和中间结果。 本地方法栈:用于支持native方法的执行,存储了每个native方法调用的状态 方法区:存放了要加载的类信息,静态变量,final类型的常量,属性和方法信息。 JVM 用 久待(Permanet Generation)来存放方法区,可通过-XX:PermSize和-XX:MaxPermSize 来指定最小值和最大值
3.GC是什么?为什么要有GC?
GC 是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
4.简单阐述垃圾回收机制?
1.回收的内容是new出来的对象所占内存;2.垃圾回收只有内存有关,清理内存外的资源依靠finalize()方法。垃圾回收机制在回收某个对象的内存前会调用该对象的finalize()方法。3.垃圾回收以单独的线程在后台运行,为减少虚拟机额外消耗,一般在内存不足时会进行垃圾回收,所以就算强制系统垃圾回收,垃圾回收也不一定发生 4.对象在内存中的状态有可达状态,可恢复状态,不可达状态,当处于可恢复状态时可能会进行垃圾回收。
5.解释内存中的栈(stack),堆(heap)和静态区(static area)的用法?
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(litera)如直接书写的100,”hello“和常量都是放在静态区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。
来源:CSDN
作者:depressed_OL
链接:https://blog.csdn.net/depressed_OL/article/details/103646530