JVM调优

JVM调优基础

 1. 先了解一些概念

    一般来说,只要使用java程序和jdk,都会涉及JVM,那么涉及JVM,我的理解就是大概率会涉及JVM有关调优的问题。weblogic,tomcat,resin,jboss,and so on 哈哈。

       JVM底层是用C++编写的。解决了java可以跨平台,即一次编译,到处运行。网络上说的多数是一些参数介绍和参数配比,并不是很深入。

  1) 数据类型

    在Java虚拟机中,数据类型分为基本类型和引用类型。基本类型保存的变量是原始的值,是在栈里运行的;引用类型保存的是变量的引用值。引用变量主要两部分组成:1)指针;2.数据本身。

               a.基本类型:byte,short,int,long,char,float,double,Boolean。

     b.引用类型:类类型,接口类型和数组。

  2)堆和栈

        堆和栈是程序运行的关键。栈是运行时的单位,堆是存储的单位。栈解决程序的运行问题,比如:程序如何执行,或者如何处理数据等。堆解决的是数据存储的问题,数据怎么放,放在哪里等。堆中存的是对象,栈中存的是基本数据类型和堆中对象的引用。

    在Java中,栈的大小通过-Xss来设置的。

       3)   为什么要把堆和栈区分出来?栈中不是也可以存储数据吗?

 2.垃圾回收

            我个人的理解是垃圾回收也是JVM调优的一个核心。

            垃圾回收算法

                   按照基本回收策略划分:1)引用计数。2)标记-清除。3)复制。4)标记-整理。   

    引用计数:是一种比较古老的算法,现在用的不是很多。

              标记-清除:这个算法执行分为两个阶段。第一阶段:从引用根节点开始标记所有被引用的对象;第二阶段:遍历整个堆,把未标记的对象清除。这种算法需要暂停整个应用,同时,会产生内存碎片。

                           

        

       

你不向我走来,我便向你走去。
原文地址:https://www.cnblogs.com/renyongbin/p/15392368.html