-
(1).Java Virtual Machine ,java虚拟机
-
(2).jvm 执行的是java字节码文件,它依赖操作系统,但是它执行的仍然是java字节码文件,使得java依赖的只是jvm ,从来不是直接依赖操作系统,从而实现了跨系统跨平台。
-
(3).jvm 包含堆 和 栈(个人编程中能够感知的就这两个内存模型,其他的认识不深,或者说在代码层面难以感知)。
-
(4).jvm 有内存限制。对于32 位的jre(关于jdk和jre的区别不用多说) ,最大内存4G,因为指令的长度32位限制,所以能够寻址的内存限度是4G,除去本地方法栈,方法区等,jre 本身需要加载的类库资源等,剩下的留给我们编写程序的内存,事实上已经不足4G,少得可怜。64位的jre 内存限度就非常大。
-
(5).每一个java 服务对应一个 jvm
-
(6).jvm 可以配置堆内存大小,栈内存大小,垃圾回收机制等,还有很多配置,如Xmn Xss等,这里不做详细介绍。
-
(7) 内存溢出、内存泄漏、栈溢出的区别:
内存溢出:加载的内存超出最大堆内存限制
内存泄漏:占用空间的废弃对象或资源,不能够被垃圾回收器识别和回收,一直随时间堆积,导致堆内存爆满。
栈溢出:超出jvm 栈内存最大限制。如递归无出口,方法引用一直入方法栈
网友评论