随笔分类 -  JVM

摘要:-XX:+UseG1GC 使用 G1 垃圾收集器 -XX:MaxGCPauseMillis -XX:MaxGCPauseMillis 设置期望达到的最大GC停顿时间指标(会尽力实现,但不保证达到),默认值是 200 毫秒。 -XX:G1HeapRegionSize=n 设置的 G1 区域的大小。值是 阅读全文
posted @ 2022-02-06 20:19 寻找风口的猪 阅读(1285) 评论(0) 推荐(0) 编辑
摘要:gceasy是一款在线的gc分析工具。试用一下分析jstack的日志 1、jstack -l 3539 > 3539.stack 2、打包成zip文件 3、上传https://gceasy.io/ 参考: https://blog.52itstyle.vip/archives/1807/ https 阅读全文
posted @ 2019-09-17 17:23 寻找风口的猪 阅读(1342) 评论(0) 推荐(1) 编辑
摘要:一、内存调整参数 -Xmx2g 设置堆内存最大值为2g -Xmx512m 设置堆内存最大值为512m -Xms1g 设置堆内存最小值1g(ps:-Xms和-Xmx实际上是 -XX:InitialHeapSize 和 -XX:MaxHeapSize 的缩写。例如:-XX:InitialHeapSize 阅读全文
posted @ 2018-09-20 20:27 寻找风口的猪 阅读(3865) 评论(0) 推荐(1) 编辑
摘要:Java 8 彻底将永久代 (PermGen) 移除出了 HotSpot JVM,将其原有的数据迁移至 Java Heap 或 Metaspace 为什么取消了永久代而用MetaSpace代替了永久代? 在 HotSpot JVM 中,永久代中用于存放类和方法的元数据以及常量池,比如Class和Me 阅读全文
posted @ 2018-05-22 23:54 寻找风口的猪 阅读(828) 评论(0) 推荐(0) 编辑
摘要:什么是压缩指针: 通常64位JVM消耗的内存会比32位的最多会多用1.5倍,这是因为对象指针在64位架构下,对象指针长度会翻倍。 对于那些将要从32位平台移植到64位的应用来说,平白无辜多了1/2的内存占用,这是开发者不愿意看到的。 幸运的是,从JDK 1.6 update14开始, 64 bit 阅读全文
posted @ 2018-04-23 19:04 寻找风口的猪 阅读(1342) 评论(0) 推荐(0) 编辑
摘要:如何获取JavaGC日志 用动态命令查看: jstat -gc 1262 2000 20 每隔20秒输入一次日志,总共输入20次 设置GC参数打印出日志 -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps  阅读全文
posted @ 2018-04-19 09:30 寻找风口的猪 阅读(634) 评论(0) 推荐(0) 编辑
摘要:jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 命令格式:jps [options] [hostid] option参数: -l : 输出主类全名或jar路径 -q : 只输出LVMID -m : 输出JVM启动时传递给main()的参数 -v 阅读全文
posted @ 2018-04-18 19:58 寻找风口的猪 阅读(403) 评论(0) 推荐(0) 编辑
摘要:参考: 阅读全文
posted @ 2018-04-15 22:58 寻找风口的猪 阅读(458) 评论(0) 推荐(0) 编辑
摘要:一、对象已死么? 判断一个对象是否存活一般有两种方式: 1、引用计数算法:每个对象都有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1。计数为0时可以回收。(无法解决循环依赖问题) 2、可达性分析算法(Reachability Analysis):从GC Roots开始向下搜索,搜索所走 阅读全文
posted @ 2018-04-14 17:16 寻找风口的猪 阅读(368) 评论(0) 推荐(0) 编辑
摘要:控制参数: -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -Xmn这只新生代的空间大小。(for jdk 1.4 or later) -XX:NewSize设置新生代最小空间大小。(for jdk 1.3/1.4) -XX:MaxNewSize设置新生代最大空间大小。(for jd 阅读全文
posted @ 2018-04-10 18:45 寻找风口的猪 阅读(278) 评论(0) 推荐(0) 编辑
摘要:除直接调用System.gc外,触发Full GC执行的情况有如下四种: 1、老年代空间不足 老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足现象,当执行Full GC后空间仍然不足,则抛出 java.lang.OutOfMemoryError:Java heap space 1、 阅读全文
posted @ 2017-12-12 16:13 寻找风口的猪 阅读(1547) 评论(0) 推荐(0) 编辑
摘要:JDK1.7 JVM的垃圾收集算法有 1. 标记-清除算法; 2. 复制算法;在商业虚拟机都是使用这种算法来回收新生代的 3. 标记-整理算法; 4、分代收集算法; JDK1.7 JVM的垃圾收集器有 1. Serial收集器 -- 复制算法 2. parNew收集器 -- 复制算法 3. para 阅读全文
posted @ 2017-12-05 19:31 寻找风口的猪 阅读(299) 评论(0) 推荐(0) 编辑
摘要:类加载器: 对于虚拟机的角度来看,只存在两种类加载器: 启动类加载器(Brootstrap ClassLoader)和“其他类加载器”。启动类加载器是由C++写的,属于虚拟机的一部分,其他类加载器都是由java语言实现,独立于虚拟机外部,全部继承自抽象类java.lang.ClassLoader。 阅读全文
posted @ 2017-11-15 18:35 寻找风口的猪 阅读(524) 评论(0) 推荐(0) 编辑
摘要:Class.forName()和ClassLoader.loadClass()区别 Class.forName():将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块; ClassLoader.loadClass():只干一件事情,就是将.class文件加载到jvm 阅读全文
posted @ 2017-11-15 13:53 寻找风口的猪 阅读(534) 评论(0) 推荐(0) 编辑
摘要:1、什么是类加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向J 阅读全文
posted @ 2017-11-14 18:55 寻找风口的猪 阅读(865) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示