0、什么是jvm
JVM是java virtual machine(java虚拟机的缩写),一种用于计算设备的规范,是一个虚构出来的计算机。Jvm虽然是个环境,但是就类似一个软件
1、jvm的位置
jvm运行在操作系统(window、linux、mac)之上;jvm用c写的,java程序在jvm上跑,所以java跑的范围时有限的,其他程序可以和jvm是并列的环境;jre里面包括了jvm,不开发不用下jdk,只运行下jre就行了。
Jre:java runtime environment,指java运行环境。包含java虚拟机,java基础类库。
Jdk:java开发工具包。jdk包含jre,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm、类库(如tools.jar)等。
(1)垃圾回收一定不会在栈(java栈、本地方法栈)和程序计数器中。首先栈用完就弹出去了,如果栈有垃圾,那么栈底的main方法都结束不了,程序就死了。
(2)真正的垃圾一般产生在堆,方法区是一个特殊的堆。99%的jvm调优是在调堆和方法区,而99%是在调堆。
java为什么需要jvm? https://zhuanlan.zhihu.com/p/76327745