
jvm
jvm学习比价
陈同学:
这个作者很懒,什么都没留下…
展开
-
jvm-调优-案例分析
jvm调优案例分析1:内存优化示例2:延迟优化示例3:检测死锁3.1 死锁产⽣条件3.3 查看进程号3.4 查看进程号3.5 jconsole 检测.3.6 Arthas检测3.6 死锁预防4 OutOfMemoryError:PermGen space5 OutOfMemoryError:Java heap space6 OutOfMemoryError: GC overhead limitexceeded7 -XX:InitialCodeCacheSize and -XX:ReservedCodeCac原创 2020-12-18 17:07:24 · 1084 阅读 · 1 评论 -
jvm-调优
jvm调优1:概述1.1:JVM基础1.1.1:java堆1.1.2:垃圾回收1.1.3:STW1.2:调优层次1.3:调优指标1.4: JVM调优原则1.4.1: 优先原则1.4.2: 堆设置1.4.3: 垃圾回收器设置1.4.4:年轻代设置1.4.4:年老代设置1.4.6:⽅法区设置2:JVM调优工具3:JVM参数4:案例分析当Java程序性能达不到⽬标,且架构上的优化、代码上的优化⼿段都已经穷尽时,通常需要调整垃圾回收器和JVM内存空间配置来进⼀步提⾼性能,这就是JVM调优。JVM性能调优是个⽼⽣常原创 2020-12-18 17:06:44 · 1737 阅读 · 0 评论 -
jvm-垃圾回收(垃圾收集器)
垃圾收集器垃圾收集器分类如何评估GC的性能指标垃圾收集器发展史经典垃圾回收器垃圾回收器的组合关系Serial(复制算法)Serial Old(标记-整理算法)ParNew (复制算法)Parallel Scavenge(复制算法)Parallel Old (标记-整理算法)CMS(Concurrent Mark Sweep)收集器(标记-清除算法)收集过程空闲列表主要优缺点常⽤参数设置⼩结G1(Garbage First)收集器 (区域化分代式)为什么叫做Garbage First(G1)呢?垃圾收集器分原创 2020-12-10 09:02:23 · 926 阅读 · 0 评论 -
jvm-垃圾回收(垃圾收集算法)
垃圾收集算法标记清除算法标记-清除算法的主要不⾜有复制算法应⽤场景优点缺点标记整理算法优点缺点三种算法对比分代收集算法对象分配⼀般过程对象分配的特殊情况各分代特点新⽣代(Young Generation)⽼年代(Old Generation)永久代(Permanent Generation)增量式垃圾回收分区算法当成功区分出内存中存活对象和死亡对象后,GC接下来的任务就是执⾏垃圾回收,释放掉⽆⽤对象所占⽤的内存空间,以便有⾜够的可⽤内存空间为新对象分配内存。⽬前在JVM中⽐较常⻅的三种垃圾回收算法是标记原创 2020-12-08 09:12:51 · 665 阅读 · 0 评论 -
jvm-垃圾回收(如何检测垃圾)
jvm-垃圾回收(如何检测垃圾、垃圾收集算法)检测垃圾引⽤计数算法(Reference Counting)概述代码示例优点:缺点:扩展知识点:Python如何解决循环引⽤?可达性分析算法(Rearchability Analysis)概述代码示例对象的finalization机制使⽤MAT查看GC Roots垃圾收集算法标记清除算法复制算法应用场景优点缺点标记整理算法优点缺点三种算法对⽐分代收集算法对象分配⼀般过程对象分配的特殊情况各分代特点分区算法检测垃圾在堆⾥放着⼏乎所有的java对象实例,在GC执原创 2020-12-04 14:33:15 · 1248 阅读 · 0 评论 -
jvm-垃圾回收(基础知识)
垃圾回收垃圾回收相关概述什么是垃圾回收什么是GCSTW并⾏与并发并发(Concurrent)并⾏(Parallel)⼆者对⽐System.gc()安全点与安全区域安全点安全区域GC分类GC触发条件年轻代(Minor GC)触发条件⽼年代(Major GC)触发条件:FULL GC触发条件垃圾回收相关概述什么是垃圾回收垃圾指的是在运⾏程序中没有任何指针(或引⽤)指向的对象,这个对象就是需要回收的垃圾。 如果不及时对内存中的垃圾进⾏清理,那么这些垃圾对象所占⽤的内存空间⼀直保留到应⽤程序结束,被保留的空间原创 2020-12-02 09:19:05 · 525 阅读 · 0 评论 -
jvm-运行时数据区(程序计数器、Java虚拟机栈、本地方法栈)
文章目录程序计数器作用存储的数据异常Java虚拟机栈栈帧局部变量表存储内容存储容量其他操作数栈作用存储内容存储容量动态连接方法返回附加信息栈异常本地方法栈本地方法介绍什么是本地方法为什么要使用本地方法JVM怎样使本地方法跑起来本地方法栈的使用流程程序计数器作用程序计数器(Program Counter Register),也叫PC寄存器,是一块较小的内存空间,它可以看作是当前线程所执行的字节码指令的行号指示器。字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳原创 2020-12-01 13:45:42 · 290 阅读 · 0 评论 -
jvm-运行时数据区(java堆)
文章目录Java堆概念存储内容存储方式堆内存划分对象创建内存的分配原则内存分配方式内存分配安全问题对象的内存布局对象访问方式数组的内存分析Java堆概念Java堆被所有线程共享,在Java虚拟机启动时创建。是虚拟机管理最大的一块内存。Java堆是垃圾回收的主要区域,而且主要采用分代回收算法。堆进一步划分主要是为了更好的回收内存或更快的分配内存。存储内容Java虚拟机规范的描是:所有的对象实例以及数组都要在堆上分配。不过随着JIT编译器的发展与逃逸分析技术的逐渐成熟,栈上分配、标量替换优化技术将原创 2020-11-27 09:19:00 · 326 阅读 · 0 评论 -
jvm-运行时数据区(运行时常量池、字符串常量池)
文章目录运行时常量池和字符串常量池存储内容存储位置常量池区别字符串常量池如何存储数据字符串常量池简介字符串常量池案例分析案例分析一分析二分析三分析四分析五分析六分析七String的Intern方法详解intern的作用JDK6中的理解JDK7+的理解intern案例分析intern方法的好处运行时常量池和字符串常量池存储内容Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。原创 2020-11-26 20:58:51 · 1191 阅读 · 0 评论 -
jvm-运行时数据区(运行时数据区概述、方法区)
运行时数据区概述运行时数据区概述JVM运行时数据区规范Hotspot运行时数据区分配jvm内存空间方法区方法区存储内容永久带与元空间区别方法区异常示例类加载导致OOM异常代码JDK1.7JDK1.8+字符串OOM异常案例代码JDK1.6JDK1.7JDK1.8+运行时数据区概述JVM运行时数据区规范jdk1.7之前,HotSpot虚拟机对于方法区的实现称之为“永久代”, Permanent Generation 。jdk1.8之后,HotSpot虚拟机对于方法区的实现称之为“元空间”, Meta原创 2020-11-26 09:23:02 · 567 阅读 · 0 评论 -
jvm-类加载时机、类加载器、双亲委派模型、破坏双亲委派模型
文章目录类加载时机类加载器自定义类加载器自定义类加载器步骤实践自定义类加载器的作用双亲委派模型为什么要使用双亲委托这种模型呢?但是JVM在搜索类的时候,又是如何判定两个class是相同的呢?既然JVM已经提供了默认的类加载器,为什么还要定义自已的类加载器呢?破坏双亲委派模型为什么需要破坏双亲委派?类加载时机什么时候开始加载,虚拟机规范并没有强制性的约束,对于其它大部分阶段究竟何时开始虚拟机规范也都没有进行规范,这些都是交由虚拟机的具体实现来把握。所以不同的虚拟机它们开始的时机可能是不同的。但是对于初始化原创 2020-11-23 19:30:24 · 321 阅读 · 0 评论 -
jvm-类加载过程(加载、验证、准备、解析)
这里写目录标题类加载过程加载加载过程加载源类和数组加载的区别加载过程的注意点验证验证的目的验证的必要性验证的过程准备解析类加载过程加载加载过程加载源类和数组加载的区别加载过程的注意点验证验证的目的验证的必要性验证的过程准备解析...原创 2020-11-23 17:07:14 · 767 阅读 · 1 评论 -
jvm-JIT使用和优化
文章目录JIT使用为什么要使用解释器与编译器并存的架构解释器与编译器特点编译的时间开销编译的空间开销为什么要使用解释器与编译器并存的架构如何编译为本地代码JIT优化公共子表达式的消除方法内联逃逸分析对象的栈上内存分配标量替换同步锁消除JIT使用为何HotSpot需要使用解释器和编译器并存的架构?JVM为什么要实现两个不同的即时编译器?程序何时会使用解释器执行?何时会使用编译器执行?哪些程序代码会被编译成为本地代码?如何编译?JAVA代码的执行效率就一定比C,C++静态执行的执行差?JAVA代码原创 2020-11-17 18:02:39 · 638 阅读 · 0 评论 -
JVM架构理解和程序执行流程
文章目录jvm架构理解jvm程序执行流程执行流程图编译器和解释器的协调工作流程热点代码热点检测方式热点检测方式回边计数器jvm架构理解jvm程序执行流程执行流程图Java编译成字节码、动态编译和解释为机器码的过程分析:编译器和解释器的协调工作流程在部分商用虚拟机中(如HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为热点代码。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码原创 2020-11-17 11:38:59 · 159 阅读 · 0 评论 -
jvm基本常识
JVM基本常识程序的执行方式主要有三种:静态编译执行、动态编译执行、动态解释执行字节码和机器码的区别机器码是电脑cpu直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,编写起来也比较难。字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器后才能成为机器码JDK、JRE、JVM的关系Oracle JDK与OpenJDK查看JDK版本 java -version如果是sun/oracle JDK 显示信息为:[root@localhost ~]# ja原创 2020-11-12 10:55:47 · 2857 阅读 · 6 评论 -
jvm知识图谱
原创 2020-11-03 14:19:31 · 395 阅读 · 0 评论