展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

随笔分类 -  后端

上一页 1 2 3 4 5 6 7 ··· 16 下一页
摘要:标记清除算法 ⾸先标记出所有需要回收的对象,在标记完成后统⼀回收所有被标记的对象 图解 黑色部分为待回收的垃圾 蓝色部分为不需要回收的内存 白色部分为未使用的内存 不足 ⼀个是效率问题,标记和清除两个过程的效率都不⾼; 另⼀个是空间问题,标记清除之后会产⽣⼤量不连续的内存碎⽚,空间碎⽚太多可能会导致 阅读全文
posted @ 2022-09-16 10:08 DogLeftover 阅读(194) 评论(0) 推荐(1) 编辑
摘要:jstat Jstat (JVM Statistics Monitoring Tool)是⽤于监视虚拟机各种运⾏状态信息的命令⾏⼯具。 它可以显示本地或者远程-虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运⾏数据, 在没有 GU 图形界⾯,只提供了纯⽂本控制台环境的服务器上,它将是运⾏期定位 阅读全文
posted @ 2022-09-16 10:05 DogLeftover 阅读(37) 评论(0) 推荐(0) 编辑
摘要:虚拟机工具 给⼀个系统定位问题的时候,知识、经验是关键基础,数据是依据,⼯具是运⽤知识处理数据的⼿段 数据包括:运⾏⽇志、异常堆栈、GC ⽇志、线程快照( threaddump/javacore⽂件)、堆转储快照( heapdump/hprof⽂件)等。 使⽤适当的虚拟机监控和分析的⼯具可以加快我们 阅读全文
posted @ 2022-09-16 09:46 DogLeftover 阅读(68) 评论(0) 推荐(0) 编辑
摘要:逃逸分析 逃逸分析的基本⾏为就是分析对象动态作⽤域:当⼀个对象在⽅法中被定义后,它可能被外部⽅法所引⽤,称为⽅法逃逸。 甚⾄还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸 栈上分配 栈上分配就是把⽅法中的变量和对象分配到栈上,⽅法执⾏完后⾃动销毁,⽽不需要垃 阅读全文
posted @ 2022-09-15 17:15 DogLeftover 阅读(29) 评论(0) 推荐(0) 编辑
摘要:简介 所谓的⼤对象是指,需要⼤量连续内存空间的 Java 对象,最典型的⼤对象就是那种很⻓的字符串以及数组 虚拟机提供了⼀个-XX: PretenureSizeThreshold 参数,令⼤于这个设置值的对象直接在⽼年代分配。即操作指定内存时,直接分配到老年代 这样做的⽬的是避免在 Eden 区及两 阅读全文
posted @ 2022-09-15 17:09 DogLeftover 阅读(26) 评论(0) 推荐(0) 编辑
摘要:java堆分布图 分配规则 对象主要分配在新⽣代的 Eden 区上 如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配 少数情况下也可能会直接分配在⽼年代中 测试代码 配置打印垃圾回收 控制台打印 自定义垃圾收集器 控制台打印 GC参数指定垃圾回收 -Xms20 M、-Xmx20 M、-X 阅读全文
posted @ 2022-09-15 16:58 DogLeftover 阅读(27) 评论(0) 推荐(0) 编辑
摘要:图解 简介 G1是⼀款⾯向服务端应⽤的垃圾收集器 特点 G1 中每个 Region 都有⼀个与之对应的 Remembered Set,当进⾏内存回收时,在 GC 根节点的枚举范围中加⼊ Remembered Set 即可保证不对全堆扫描也不会有遗漏 检查Reference引⽤的对象是否处于不同的Re 阅读全文
posted @ 2022-09-15 16:24 DogLeftover 阅读(62) 评论(0) 推荐(0) 编辑
摘要:图解 简介 CMS (Concurrent Mark Sweep)收集器是-种以获取最短回收停顿时间为⽬标的收集器。 ⽬前很⼤⼀部分的Java应⽤集中在互联⽹站或者B/S系统的服务端上,这类应⽤尤其重 视服务的响应速度,希望系统停顿时间最短,以给⽤户带来较好的体验。 CMS 收集器是基于“标记-清除 阅读全文
posted @ 2022-09-15 16:04 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Parallel Scavenge收集器 Parallel Scavenge 收集器是⼀个新⽣代收集器,它也是使⽤复制算法的收集器,⼜是并⾏的多线程收集器 由于与吞吐量关系密切,Parallel Scavenge 收集器也经常称为“吞吐量优先”收集器 吞吐量是什么?CPU⽤于运⾏⽤户代码的时间与CP 阅读全文
posted @ 2022-09-15 15:54 DogLeftover 阅读(52) 评论(0) 推荐(0) 编辑
摘要:serial垃圾收集器 Serial是⼀个单线程的垃圾收集器 特点 “Stop The World”,它进⾏垃圾收集时,必须暂停其他所有的⼯作线程,直到它收集结束。在⽤户不可⻅的情况下把⽤户正常⼯作的线程全部停掉 使⽤场景:多⽤于桌⾯应⽤,Client端的垃圾回收器 桌⾯应⽤内存⼩,进⾏垃圾回收的时 阅读全文
posted @ 2022-09-15 15:33 DogLeftover 阅读(69) 评论(0) 推荐(0) 编辑
摘要:标记整理算法 复制收集算法在对象存活率较⾼时就要进⾏较多的复制操作,效率将会变低。更关键的是,如果不想浪费 50%的空间,就需要有额外的空间进⾏分配担保, 以应对被使⽤的内存中所有对象都 100%存活的极端情况,所以在⽼年代⼀般不能直接选⽤这种算法 根据⽼年代的特点,有⼈提出了另外⼀种“标记-整理( 阅读全文
posted @ 2022-09-15 14:53 DogLeftover 阅读(59) 评论(0) 推荐(1) 编辑
摘要:简介 Jmap (Memory Map for Java)命令⽤于⽣成堆转储快照。如果不使⽤ jmap 命令,要想获取 Java 堆转储快照,还有⼀些⽐较“暴⼒”的⼿段: -XX: +HeapDumpOnOutOfMemoryError参数,可以让虚拟机在 OOM 异常出现之后⾃动⽣成 dump ⽂ 阅读全文
posted @ 2022-09-15 14:39 DogLeftover 阅读(85) 评论(0) 推荐(0) 编辑
摘要:图解 从reference出发,指向堆中的1个对象,该对象又指向另一个对象,这就是引用链 没有被reference指向的,或没有被其他对象指向的会被标记为待回收,标记达到指定次数时,则触发垃圾回收机制 可达性分析算法的概念(⼜叫跟搜索法) 根搜索算法是从离散数学中的图论引⼊的,程序把所有的引⽤关系看 阅读全文
posted @ 2022-09-15 14:15 DogLeftover 阅读(189) 评论(0) 推荐(0) 编辑
摘要:垃圾回收机制 Java语⾔中⼀个显著的特点就是引⼊了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃⽽解。由于有个垃圾回收机制,Java中的对象不再有“作⽤域”的概念,只有对象的引⽤才有“作⽤域”。 垃圾回收可以有效的防⽌内存泄露,有效的使⽤空闲的内存 引用计数器 堆中每个对象实例都有⼀个引⽤ 阅读全文
posted @ 2022-09-15 14:04 DogLeftover 阅读(47) 评论(0) 推荐(0) 编辑
摘要:java对象内存布局 对象头⽤于存储对象的元数据信息: Mark Word 部分数据的⻓度在32位和64位虚拟机(未开启压缩指针)中分别为32bit和64bit,存储对象⾃身的运⾏时数据如哈希值等。Mark Word⼀般被设计为⾮固定的数据结构,以便存储更多的数据信息和复⽤⾃⼰的存储空间。 类型指针 阅读全文
posted @ 2022-09-15 10:34 DogLeftover 阅读(34) 评论(0) 推荐(0) 编辑
摘要:图示 虚拟机遇到⼀条new指令时,⾸先检查这个对应的类能否在常量池中定位到⼀个类的符号引⽤ 判断这个类是否已被加载、解析和初始化 为这个新⽣对象在Java堆中分配内存空间,其中Java堆分配内存空间的⽅式主要有以下两种 指针碰撞 分配内存空间包括开辟⼀块内存和移动指针两个步骤 ⾮原⼦步骤可能出现并发 阅读全文
posted @ 2022-09-15 10:09 DogLeftover 阅读(38) 评论(0) 推荐(0) 编辑
摘要:本地方法栈 简介 ⽤于作⽤域本地⽅法执⾏的⼀块Java内存区域 本地方法就是native方法 import java.util.concurrent.atomic.AtomicInteger; public class A { public native static void c(); publi 阅读全文
posted @ 2022-09-15 09:10 DogLeftover 阅读(53) 评论(0) 推荐(0) 编辑
摘要:简介 ⽤于作⽤于⽅法执⾏的⼀块Java内存区域 作用 每个⽅法在执⾏的同时都会创建⼀个栈帧(Stack Framel)⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。 每⼀个⽅法从调⽤直⾄执⾏完成的过程,就对应着⼀个栈帧在虚拟机栈中⼊栈到出栈的过程 代码案例 import java.util 阅读全文
posted @ 2022-09-14 14:49 DogLeftover 阅读(31) 评论(0) 推荐(0) 编辑
摘要:简介 线程共享数据区:⽅法区、堆 线程隔离数据区:虚拟机栈、本地⽅法栈、堆、程序计数器 图解 程序计算器 程序计数器是⼀块较⼩的内存空间,它可以看作是当前线程所执⾏的字节码的⾏号指示器 线程是⼀个独⽴的执⾏单元,是由CPU控制执⾏的 字节码解释器⼯作时就是通过改变这个计数器的值来选取下⼀条需要执⾏的 阅读全文
posted @ 2022-09-14 14:28 DogLeftover 阅读(31) 评论(0) 推荐(0) 编辑
摘要:依赖关系(Dependence) 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了 1) 类中用到了对方 2) 如果是类的成员属性 3) 如果是方法的返回类型 4) 是方法接收的参数类型 5) 方法中使用到 代码案例 public class PersonDao{} 阅读全文
posted @ 2022-08-29 16:36 DogLeftover 阅读(26) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 16 下一页
点击右上角即可分享
微信分享提示