随笔分类 - JVM
摘要:1,类加载 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令, 当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class
阅读全文
摘要:Javassist优势 – 比反射开销小,性能高。–javassist性能高于反射,低于ASM运行时操作字节码可以让我们实现如下功能:– 动态生成 新的类– 动态改变某个类的结构 ( 添加 / 删除 / 修改 新的属性 / 方法 )javassist 的最外层的 API 和 JAVA 的反射包中的
阅读全文
摘要:1,Lombok 插件,类里面可以免去写getters,setters方法,加上注解@Getter @Setter 里面就是用字节码技术动态生成属性的getters,setters 方法 1,IDE 安装lombok 插件 2,项目maven 引用包 https://blog.csdn.net/yi
阅读全文
摘要:JMeter LoadRunner 压力测试工具 JConsole 是一个内置 Java 性能分析器,可以查看内存,线程,类,CPU 等的使用情况,可以通过线程去查看线程的试用情况,死锁可以被检测出来 visualVm 来监控 Java 应用程序性能和跟踪 Java 中的代码,和JConsole 差
阅读全文
摘要:1,新建web 测试项目并且发布到Tomcat,访问路径:http://127.0.0.1:8080/JvmWeb/index 2,在Jmeter 中添加项目 Step1: 在Test plan 中 Add 线程组,可以添加线程的数量,以及访问的次数 Step2: 在添加的Thread Group
阅读全文
摘要:串行与并行收集器串行回收: JDK1.5前的默认算法 缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长并行回收: 多个线程执行垃圾回收适合于吞吐量的系统,回收时系统会停止运行 垃圾收集器 1,serial 收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线
阅读全文
摘要:1,Java堆溢出 错误原因: java.lang.OutOfMemoryError: Java heap space 堆内存溢出 模拟:-Xms1m -Xmx10m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError 设置堆初始内存1M 最大内存
阅读全文
摘要:-XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+PrintGCDetails 每次触发GC的时候更详细的相关日志 -XX:+UseSerialGC 串行回收 -Xms 堆初始值(要设置成和-Xmx一样大,否则会频繁的GC) -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -
阅读全文
摘要:标记清除算法: 1,标记阶段:找到所有可以访问的对象,做个标记 2,清除阶段:遍历堆,找到未做标记的对象,进行清除 标记和清除的效率不高,尤其是要扫描的对象比较多的时候 ,(一般用于老年代,因为老年代回收的频率不高)缺点: 会造成内存碎片(会导致明明有内存空间,但是由于不连续,申请稍微大一些的对象无
阅读全文
摘要:垃圾回收机制: 不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来
阅读全文
摘要:Java 堆(Java Heap): 概念:Java 堆 是Java 虚拟机管理的内存中最大的一块。是被所有线程共享的一块内存区域。在Java 虚拟机启动时候创建。 作用:所有实例对象,数组都要在堆上分配。 别名:GC 堆(garbage collected heap),因为堆是垃圾回收器管理的主要
阅读全文