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

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

3,iconst:定义一个操作数;istore:存储操作数;iload:加载操作数,当变量或对象被调用时加载;ireturn:返回值;iadd:加法;imul:乘法
4,各个平台都有自己的JVM,当下载SDK时就安装了JVM
5,缓存的用处:存放暂时不用的东西,一个.java源文件先经过解析器转为.class文件再加载(靠类加载器classloader)到内存(即JVM虚拟机区域),当内存不够用时把暂时不用东西加载到缓存中去,腾出空间给新打开的文件。
6,堆与栈的区别:堆:new显式调用,谁创建谁释放空间,Java语言有自动垃圾回收机制,故不需手动释放内存;栈:操作系统分配的内存空间操作系统释放,作用域结束即释放;每一个方法都是一个栈帧
反编译文件.txt中#记录出口
GC(可达性分析)->判断是否回收垃圾
随着遍历次数的增加逐步降级,达到轮巡次数即释放内存

网友评论