JVM性能调优
讲述jvm性能调优以及怎样编写高效优雅的java代码
wangle965235568
程序员的眼里,不仅有代码和bug,还有诗与远方和妹子
展开
-
七、编写高效优雅的java程序
一、面向对象1、构造器参数太多如果参数很多,会导致构造方法非常多,拓展性差,代码难编写,且难以看懂。 用 JavaBeans 模式,get 和 set 一行构造编程多行代码实现,需要使用额外机制确保一致性和线程安全。用 builder 模式:1、5 个或者 5 个以上的成员变量 2、参数不多,但是在未来,参数会增加。2、不需要实例化的类应该构造器私有如,一些工具类提供的都是静态方法,这些类是不应该提供具体的实例的。可以参考 JDK 中的 Arrays。好处:防止使用者 new 出多个实例。3、原创 2020-05-26 09:56:21 · 251 阅读 · 0 评论 -
六、JVM调优(GC调优)
前言JVM调优的本质:并不是为了显著的提升系统的性能,不是说调优过后,性能就能提升几倍或者十几倍,主要调的是稳定性。如果系统出现了频繁的垃圾回收,这个系统是不稳定的,所以就需要我们来进行jvm调优,调整垃圾回收的频次一、GC调优原则1、调优的原则大多数的 java 应用不需要 GC 调优大部分需要 GC 调优的的,不是参数问题,是代码问题在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多;GC 调优是最后的手段2、调优的目的GC 的时间够小GC 的次数够少发生 Ful原创 2020-05-11 16:20:17 · 1308 阅读 · 0 评论 -
5、JVM性能优化(内存泄漏、内存溢出、各种JVM命令、定位内存问题)
一、内存溢出、内存泄露1、内存溢出程序在申请内存时,没有足够的内存空间栈溢出虚拟机栈(线程独享的栈空间)StackOverflowError栈溢出:不断创建线程,使得栈空间被打满,OutOfMemoryError堆溢出不断的创建对象使得堆大小小于要创建的对象大小OutOfMemoryError直接内存溢出分配的本地内存大小大于 JVM 的限制方法区溢出在经常动态生产大量 Class 的应用中2、内存泄漏程序在申请内存后,无法释放已申请的内存,导致可用内存变少长生命周期对象原创 2020-05-11 14:52:44 · 691 阅读 · 0 评论 -
4、JVM执行子程序
一、class文件结构1、魔数与 Class 文件的版本每个 Class 文件的头 4 个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的 Class 文件。使用魔数而不是扩展名来进行识别主要是基于安全方面的考虑,因为文件扩展名可以随意地改动。文件格式的制定者可以自由地选择魔数值,只要这个魔数值还没有被广泛采用过同时又不会引起混淆即可紧接着魔数...原创 2020-05-06 16:02:48 · 248 阅读 · 0 评论 -
3、垃圾回收算法与垃圾回收器
一、GC回收对象时,怎么判断对象的存活1、引用计数法给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。c++中的智能指针就是利用引用计数来实现的。优点是快,方便,实现简单,但是存在一个循环引用的问题。缺陷:对象相互引用时(A.instance=B 同时 B.instance=A),很难判断对象是否该回收。2、可达性分析(JDK...原创 2020-05-04 19:57:16 · 265 阅读 · 0 评论 -
2、jvm中的对象
一、对象的分配虚拟机遇到一条new指令时:在常量池中定位到需要new的对象的符号引用,如果未找到,则抛出异常:classNotFoundException检查还在先执行相应的类加载过程,如果没有就进行加载内存分配根据方法区的信息确定为该类分配的内存空间大小指针碰撞 (java 堆内存空间规整的情况下使用)如果 Java 堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的...原创 2020-04-29 22:31:15 · 218 阅读 · 0 评论 -
1、深入理解JVM内存区域
一、为什么要了解虚拟机JVM 不单单只支持 Java 语言,也支持其他语言(Scala、Kotlin、Groovy 等等)区块链 2.0–以太坊(比特币是区块链 1.0) 中提供了 EVM 的虚拟机,它的实现和 JVM 类似,基于栈、生成脚本编译成字节码来执行。知 识通用。(理论大于实际)二、虚拟机的内存区域运行时数据区这个是抽象概念,内部实现依赖寄存器、高速缓存、主内存(具体要分析 J...原创 2020-04-27 22:23:56 · 191 阅读 · 0 评论 -
JMM和底层实现原理
一、JMM 基础-计算机原理1、概念Java 内存模型即 Java Memory Model,简称 JMM。JMM 定义了 Java 虚拟机 (JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM 是隶属于 JVM 的。Java1.5 版本对其进行了重构,现在的 Java 仍沿用了 Java1.5 的版本。Jmm 遇到的问题与现代计算机中遇到的问题是差不多的。2...原创 2020-04-22 16:01:50 · 359 阅读 · 0 评论