随笔分类 - JVM
摘要:一、进程:计算机分配资源的基本单位-独立的内存空间;比如QQ 父子进程:参考redis中的持久化方案,涉及的fork() :https://www.cnblogs.com/gabin/p/13666134.html 父进程 fork() ->子进程 数据隔离(写时复制,没写之前只是个副本) 僵尸进程
阅读全文
摘要:一、强引用(GC不会被回收) 代码: package top.gabin.concurrent.reference; /** * 强引用 * -XX:+PrintGC -Xms11m -Xmx11m * */ public class StrongReference { public static
阅读全文
摘要:1、地址:https://github.com/alibaba/arthas/blob/master/README_CN.md 2、上述地址直接就有很多例子,还有安装方法,也没啥好写的。 最喜欢用的是redefine,这个原理大致应该是ClassLoader重新加载类信息去替换的。因为使用命令cla
阅读全文
摘要:GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC System.gc()
阅读全文
摘要:CMS的问题 Memory Fragmentation(内存碎片过多,导致启动单线程serial垃圾回收器) -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction 默认为0 指的是经过多少次FGC才进行压缩 Floatin
阅读全文
摘要:https://www.cnblogs.com/liugh/p/7620336.html
阅读全文
摘要:1、远程启动设置参数 java -Djava.rmi.server.hostname=192.168.17.11 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=11111 -Dcom.sun.management
阅读全文
摘要:调优前的基础概念: 吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间) 响应时间:STW越短,响应时间越好 所谓调优,首先确定,追求啥?吞吐量优先,还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量... 一般1.8之后,暂且默认G1就可以了,综合性比较强。其他新代
阅读全文
摘要:JVM的命令行参数参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html HotSpot参数分类 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSpot支持特定命令 不稳定:-X
阅读全文
摘要:-XX:+UseSerialGC :Serial New (DefNew) + Serial Old 小型程序。默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器【1.2之前默认的】 -XX:+UseParNewGC = ParNew + SerialOld 这个组合
阅读全文
摘要:GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题: 忘记回收 多次回收 没有任何引用指向的一个对象或者多个对象(循环引
阅读全文
摘要:指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器 Runtime Data Area PC 程序计数器:由于存在线程切换,线程需要有自己的程序计数器来记住指令执行到的位置【线程私有】 存放指令位置 虚拟机的运行,类似于这
阅读全文
摘要:对象大小(64位机) 观察虚拟机配置 java -XX:+PrintCommandLineFlags -version 普通对象 对象头:markword 8 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节 实例数据 引用类型:
阅读全文
摘要:JMM 硬件层数据一致性 intel 用MESI https://www.cnblogs.com/z00377750/p/9180644.html 现代CPU的数据一致性实现 = 缓存锁 + 总线锁【早期的唯一实现】 读取缓存以cache line为基本单位,目前64bytes 位于同一缓存行的两个
阅读全文
摘要:1:类加载-初始化 加载过程 Loading 双亲委派,主要出于安全来考虑 LazyLoading 五种情况 –new getstatic putstatic invokestatic指令,访问final变量除外 –java.lang.reflect对类进行反射调用时 –初始化子类的时候,父类首先初
阅读全文
摘要:JVM 1:JVM基础知识 什么是JVM JVM是一种规范 也是一种运行在操作系统之上的虚拟操作系统,也叫虚拟机;当然也存在一种基于硬件的JVM实现(具体的名字有点忘记了),这种作者自己理解的话认为也算是操作系统了 常见的JVM Oracle HotSpot(原SUN,不过也是收购来的),虽然是商用
阅读全文

浙公网安备 33010602011771号