随笔分类 -  JVM

摘要:修改class文件的内容修改Java生成的class文件有三种方法:JClassLib、MadEdit、环境模拟。方法三比较耗费时间,但简单易懂,解决问题能力远大于方法1和2,亲测方法可行。 方法一:使用工具JClassLib进行修改 该方法是网上比较常用的方法,可用于简单的修改,如修改某个字符串的值。可以将setText 阅读全文
posted @ 2022-09-16 11:26 小马000 阅读(5158) 评论(0) 推荐(1)
摘要:类的加载由JVM执行引擎来完成 早期--编译期:源代码文件*.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 -> 语义分析器 -> 注解抽象语法树 -> 字节码生成器 -> JVM字节码文件*.class 晚期--运行期==执行引擎执行:JVM字节码 阅读全文
posted @ 2020-09-13 14:58 小马000 阅读(257) 评论(0) 推荐(0)
摘要:JDK的命令行工具 Sun JDK监控和故障处理工具 名称 主要作用 jps JVM Process Status Tool,显示指定系统内所有的HOTSPOT虚拟机进程 jstat JVM Statistics Monitoring Tool,收集Hotspot虚拟机各方面的运行数据 jinfo 阅读全文
posted @ 2020-08-27 23:51 小马000 阅读(178) 评论(0) 推荐(0)
摘要:垃圾收集前的判断 1:判断对象“死活” 引用计数算法:定义略,主流的Java虚拟机并没有选用引用计数算法来管理内存,因为此算法很难解决对象之间的相互循环引用的问题 可达性分析算法:定义略,可作为GC Roots的对象包括: 1:虚拟机栈(栈帧中的本地变量表)中引用的对象 2: 方法区中静态类属性引用 阅读全文
posted @ 2020-07-06 11:53 小马000 阅读(143) 评论(0) 推荐(0)
摘要:第二章:Java内存区域与内存溢出异常 2.1 运行时数据区 1:程序计数器 : 线程私有,较小的内存空间,当前线程所执行的字节码的行号指示器,唯一不会发生错误的内存区域 2:虚拟机栈: 线程私有,生命周期和线程相同,为虚拟机执行Java方法服务,指的是Java内存模型,可发生StackOverfl 阅读全文
posted @ 2020-05-15 11:53 小马000 阅读(334) 评论(0) 推荐(0)
摘要:Java内存模型(JMM)与线程安全 1:JMM其实是java虚拟机栈的一部分 2:主内存和工作内存:都属于Java虚拟机内存 主内存:主要对应于JVM内存区域中的堆内存中的对象实例数据部分 工作内存:主要对应于JVM内存区域中的虚拟机栈中的部分区域 主内存与工作内存的数据交换操作的过程(通过总线b 阅读全文
posted @ 2020-03-21 15:54 小马000 阅读(134) 评论(0) 推荐(0)