1.java应用jvm原理及参数调优

什么是jvm?

虚拟机 ,字节码,平台无关

jvm是按照运行时数据的存储结构来划分内存结构的,jvm在运维java程序时,将它们划分成几种不同格式的数据,分别存储在不同的区域,这些数据统一称为运行时数据。运行时数据包括java程序本身的数据信息和jvm运行java需要的额外数据信息。

jvm堆配置参数

1  -Xms 初始堆大小

默认物理内存的1/641(<1g)

2  -Xms 最大堆大小

默认物理内存的1/4(<1GB),实际中建议不大于4G。

3 一般建议设置 -Xms= -Xmx

好处是避免每次在gc后,调整堆的大小,减少系统内存分配开销

4 整个堆的大小= 年轻代大小+年老代大小+持久代大小.

 jvm  内存结构

 jvm新生代(young generation)

新生代=1个eden区+2个Survivor区

-Xmn 年轻代大小(1.4 or lator)

-XX:NewSize, -XX:MaxNewSize (设置年轻代大小(for1.3/1.4))

默认值大小为整个堆的3/8

-XX:NewRatio

年轻代(包括Eden和两个survivor区)与年老代的比值(除去持久代)

Xms=Xmx  并且设置了Xmn的情况下,该参数不需要进行设置。

-XX:SurvivorRatio

Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2.8,一个Survivor区占整个年轻代的1/10

用来存放jvm 刚分配的java对象。

java 持久代(perm generation)

1.代=整个堆-年轻代大小-老年代大小

1.

原文地址:https://www.cnblogs.com/wolfboy55-163-com/p/8126146.html

时间: 2024-10-09 18:14:01

1.java应用jvm原理及参数调优的相关文章

JVM原理讲解和调优

一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码.而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息

JVM原理和性能调优

JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类. 在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.JVM是Java程序运行的环境,但是他同时一个操作系统的一个应用程序一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间. 首先来说

Jvm原理剖析与调优之内存结构

一些不得不说的概念 JVM JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.是运行java应用最底层部分. JDK(Java Development kit) 整个Java的核心,包括了Java运行环境(

jvm原理及性能调优系列(jvm调优)

个人认为jvm调优主要通过以下方法解决 1.设置合适的最大堆内存(新生代和老生代的最大和值)和最小堆内存(jvm启动时占用的操作系统内存大小),及设置好堆的比例分配. 2.设置合适的新生代 因为对其对系统性能和GC回收有一定的影响. 3.设置合适的持久代 因为其直接决定系统可以支持多少个类定义和多少个常亮. 4.设置合适的线程栈 否则系统可能因为线程所需资源和空间不够而异常退出.

jvm原理及性能调优系列(调优工具)

 Linux命令行工具: 1.TOP命令:能够显示系统各个进程占用资源状况. 2.SAR命令:能够周期性地对系统CPU和内存采样. 3.VMSTATE命令:它可以统计CPU和内存使用情况和SWAP使用信息,也可以周期性地统计信息. 4.IOSTAT命令:提供详尽的IO信息 5.PIDSTAT命令:不但可以检测进程,还能够检测线程.  windows检测工具: 1.任务管理器 2.Perfmon性能工具 3.Process Exploer 4.PSLIST JDK工具: 1.JPS 列出java的

JVM原理与深度调优(三)

jvm垃圾收集算法 1.引用计数算法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收.此方法简单,无法解决对象相互循环引用的问题.还有一个问题是如何解决精准计数.这种方法现在已经不用了 2.根搜索算法从GC Roots开始向下搜索,搜索所走过的路径称为引用链.当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的.不可达对象. 在java语言中,GC Roots包括:虚拟机栈中引用的对象.方法区中类静态属性实体引用的对象.方法区中常量引

jvm原理及性能调优系列(自动内存管理机制)

JAVA内存区域和内存溢出异常 1.JAVA运行时数据区如下图 程序计数器:当前线程正在执行的代码的行号指示器.是线程私有的.它是JAVA虚拟机唯一没有指定OutOfMerroryError异常的区域. 虚拟机栈:是线程私有的.描述的是Java方法执行时的内存模型.每个方法被创建时,会创建一个栈帧,用于存储局部变量表.操作表.方法出口等信息. 本地方法栈:其发挥的作用与虚拟机栈类似.不同的是虚拟机栈为虚拟机方法服务,本地栈位为虚拟机使用到的Native方法服务. Java堆:被所有线程共享的一块

Spark Shuffle原理、Shuffle操作问题解决和参数调优

摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuffleManager 2 Shuffle操作问题解决 2.1 数据倾斜原理 2.2 数据倾斜问题发现与解决 2.3 数据倾斜解决方案 3 spark RDD中的shuffle算子 3.1 去重 3.2 聚合 3.3 排序 3.4 重分区 3.5 集合操作和表操作 4 spark shuffle参数调优

JVM参数调优与垃圾回收机制

自动内存管理机制 Java虚拟机原理  所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为 系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box.Vmare就属于系统虚拟机,他们完全是对物理计算的仿真, 提供了一个可以运行完整操作系统的软件平台. 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Java 自己码指令.无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中