Java基础-JVM调优策略简介】的更多相关文章

Java基础-JVM调优策略简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JVM结构分析 1>.JVM结构图 2>.JVM运行时数据区功能说明 JVM管理的内存段可分为两大类:线程共享内存和线程私有内存. 2.1:线程共享内存 方法区:存储jvm加载class,常量,静态变量,即时编译器编译后的代码等. java堆:存储Java的所有对象实例,数组等: 2.2:线程私有内存 程序计数寄存器:每个线程有自己的计数存寄器,存储当前线程执行字节码的地址: jvm栈:jv…
一般来说,jvm的调优策略是没有一种固定的方法,只有依靠我们的知识和经验来对项目中出现的问题进行分析,正如吉德林法则那样当你已经把问题清楚写出来,就已经解决了一半.虽然JVM调优中没有固定的策略,但是本文会介绍几种比较常见的调优策略. 一.减少Full GC 项目中如果出现了Full GC,由于Full GC是清理整个堆空间包括年轻代和永久代,时间会很长,会大大的减少程序的性能.减少Full GC的频率策略可以参考 https://blog.csdn.net/qq_34939489/articl…
Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young).年老代(Tenured).持久代(Perm),对不同生命周期的对象使用不同的算法.(基于对对象生命周期分析) 1.Young(年轻代) 年轻代分三个区.一个Eden区,两个Survivor区.大部分对象在Eden区中生成.当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这…
基础语法. 面向对象. 字符串和集合. IO流. 接口. lambda. 方法引用. Stream. 模块化. 一.java的前世今生: J2SE:标准体验版.J2EE:企业版.J2ME:小型版(移动嵌入开发) 二.JDK.JRE和JVM的区别 JDK:java开发工具包,开发用的 (包含JRE以及开发工具,面向开发人员使用) JRE:java运行时环境,运行用的 (包含JVM以及运行类库,面向运行人员使用) jvm是java的虚拟机,是真正执行程序的,JRE是运行环境,包括类库 JVM:Jav…
1.1 .线程 ​ 这里所说的线程指程序执行过程中的一个线程实体.JVM 允许一个应用并发执行多个线程.Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系.当线程本地存储.缓冲区分配.同步对象.栈.程序计数器等准备好以后,就会创建一个操作系统原生线程.Java 线程结束,原生线程随之被回收.操作系统负责调度所有线程,并把它们分配到任何可用的 CPU 上.当原生线程初始化完毕,就会调用 Java 线程的 run() 方法.当线程结束时,会释放原生线程和 Java 线程的…
首先看一个解析列子 JVM的内存空间: (1). Heap 堆空间:分配对象 new Student() (2). Stack 栈空间:临时变量 Student stu (3).Code 代码区 :类的定义,静态资源 Student.class eg:Student stu = new Student(): //new 在内存的堆空间创建对象 stu.study(); //把对象的地址赋给stu引用变量 上例实现步骤: a.JVM加载Student.class 到Code区 b.new Stud…
JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: 1)Bootstrap ClassLoader /启动类加载器 $JAVA_HOME中jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类  2)Extension ClassLoader/扩展类加载器 负责加载java平台中扩展功能的一些jar包,包括$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包 3…
jvm=> java虚拟机 一.java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机. Java虚拟机总是开始于一个main()方法,这个方法必须是公有.返回void.直接受一个字符串数组.在程序执行时,你必须给Java虚拟机指明这个包换main()方法的类名. Main()方法是程序的起点,他被执行的线程初始化为程序的初始线…
推荐阅读:https://www.cnblogs.com/wangjzh/p/5258254.html 一.内存结构图 先导知识: 一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行. 程序计数器 保存着当前线程执行的虚拟机字节码指令的内存地址,可以看作是当前线程所执行的字节码的行号指示器.使得保证线程切换回来后,还能恢复到原先状态.(本地native丰…
本JVM系列均来源于<深入理解Java虚拟机>一书中,版权归该书作者所有. 环境:一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新系统硬件为4个CPU.16GB物理内存.OS为64位CentOS5.4.Resin作为Web服务器. 说明:整个服务暂时没有部署别的应用,所有硬件资源都可以提供给访问量并不算太大的网站使用.管理员为了尽量利用硬件资源选用了64位的JDK1.5,并通过-Xmx和-Xms参数将java堆固定在12GB. 问题:使用一段时间后发现使用效果并不理想,网站经常不…