JVM虚拟机-跨平台的利器

1,jvm虚拟机要字节码文件,即out文件内的.class文件


idea提供终端操作

2,javap -c 路径 >test.txt     终端输入反汇编语句

反编译后的字节码.txt文件

3,iconst:定义一个操作数;istore:存储操作数;iload:加载操作数,当变量或对象被调用时加载;ireturn:返回值;iadd:加法;imul:乘法

4,各个平台都有自己的JVM,当下载SDK时就安装了JVM

5,缓存的用处:存放暂时不用的东西,一个.java源文件先经过解析器转为.class文件再加载(靠类加载器classloader)到内存(即JVM虚拟机区域),当内存不够用时把暂时不用东西加载到缓存中去,腾出空间给新打开的文件。

6,堆与栈的区别:堆:new显式调用,谁创建谁释放空间,Java语言有自动垃圾回收机制,故不需手动释放内存;栈:操作系统分配的内存空间操作系统释放,作用域结束即释放;每一个方法都是一个栈帧

反编译文件.txt中#记录出口

GC(可达性分析)->判断是否回收垃圾

随着遍历次数的增加逐步降级,达到轮巡次数即释放内存


栈帧流程图及垃圾回收机制GC图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容