怎样用word做网站,wordpress移除密码保护,绵阳公司商务网站制作,网站开发建设费用明细JVM-基础知识
什么是JVM JVM是一种跨语言的平台#xff0c;任何语言只要能编译成.class文件都可以被JVM运行。JVM只和.class文件有关系#xff0c;和Java语言没关系。JVM是一种虚拟机规范。 java文件是如何交给JVM执行的 JVM的常见实现 HostStop:Oracle官方另外还有IBM的J9、…JVM-基础知识
什么是JVM JVM是一种跨语言的平台任何语言只要能编译成.class文件都可以被JVM运行。JVM只和.class文件有关系和Java语言没关系。JVM是一种虚拟机规范。 java文件是如何交给JVM执行的 JVM的常见实现 HostStop:Oracle官方另外还有IBM的J9、Microsoft VM、TaoBaoVM、azul zing(收费)。 堆、栈 栈和堆是内存中的进程的结构一个线程一个栈这个线程中的每个方法是一个栈贞栈中存储的是堆中内存的地址栈内存空间在方法弹栈后自动消失而堆内存空间需要手动管理,这就导致栈贞弹出时候但是其指向堆中的内存空间是无法被释放 栈帧
每个方法对应一个栈帧 其中包括 Local Variable Table:局部变量表。存储方法中的局部变量包括形参Operand Stack:操作数堆栈Dynamic Linking:指向性JVM运行时常量池return address: 方法返回值地址 栈上分配和线程本地分配(TLAB)
触发的情况 线程私有且小对象无逃逸即方法内部的变量无方法外部引用标量替换即可以用少了的基本数据类型、引用类型等可以代替整个对象 线程本地分配TLAB 全称ThreadLocal Allocation Buffer在edne区大约占用1%的内存归线程独有空间多线程下不必争抢堆内存空间提高效率。 JVM运行时数据区(RunTimeDateArea)
包括以下几部分 PC-程序计数器存放指令的位置cup执行就是不停的在PC中取指令执行直到指令被执行完每个线程一个。JVM stacks-JVM的栈:存放栈帧每个线程一个native method stacks-本机方法栈: C/C中的栈本地方法栈每个线程一个heap-堆:线程共享method area-方法区: 包括JVM运行时常量池线程共享DirectMemory-直接内存区:直接内存区JDK1.4后新增可直接访问内核空间内存NIO实现零拷贝 JVM内存关系 堆内存分为年轻代老年代非堆内存只包含永久代即方法区的实现存储的是程序运行时长期存活的对象比如类的元数据、方法、常量、属性等。1.8之前方法区的实现为PermGenjdk1.8开始方法区的实现为MetaSpace。在jdk1.8废弃了永久代使用元空间MetaSpace取而代之元空间存储的对象与永久代相同区别是元空间并不在jvm中使用的是本地内存。在jdk1.8字符串常量池已经从永久代移动到了堆中