JVM
文章平均质量分 51
、小H
这个作者很懒,什么都没留下…
展开
-
visualvm远程监控JVM配置
CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=你的ip"CATALINA_OPTS="${CATALINA_OPTS} -Djavax.management.builder.initial="CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote=true"# 此处是JMX端口,不能和tomcat端口保持一致否则 tomcat 无法启动 visualvm原创 2021-05-28 17:07:22 · 302 阅读 · 0 评论 -
走进JVM调优
前面几篇介绍了JVM的堆空间的老年代和年轻代,以及JVM调优的一些参数,本文介绍如何对JVM下手调优。目前系统现象:1、系统响应速度大概为100ms;2、当系统QPS增长到40时,机器每隔5秒就执行一次minor gc,每隔3分钟就执行一次full gc,并且很快就一直full GC了;3、每次Full gc后旧生代大概会消耗400M,有点多了。解决方案:解决Full GC次数过多的问题 (1)降低响应时间或请求次数,这个需要重构,比较麻烦;——这个是终极方法,往往能够顺利的解..原创 2021-05-27 14:04:28 · 323 阅读 · 0 评论 -
JVM元空间(Metaspace)
一、从方法区(PermGen)到元空间(Metaspace)方法区(PermGen)JDK1.8以前的HotSpot JVM有方法区,也叫永久代(permanent generation)。 方法区用于存放已被虚拟机加载的类信息、常量、静态变量,即编译器编译后的代码。 方法区是一片连续的堆空间,通过-XX:MaxPermSize来设定永久代最大可分配空间,当JVM加载的类信息容量超过了这个值,会报OOM:PermGen错误。 永久代的GC是和老年代(old generation)捆绑在一起的,无原创 2021-05-27 13:58:31 · 2821 阅读 · 1 评论 -
年轻代和老年代的比例
在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆的内存模型大致为:从图中可以看出:堆大小 = 新生代 + 老年代。其中,堆的大小可以通过参数 –Xms、-Xmx 来指定。默认的,新生代 ( Young ) 与老年代 ( Old ) 的..原创 2021-05-27 11:41:40 · 4516 阅读 · 0 评论 -
JVM常见配置汇总
堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSize=n:设置持久原创 2021-05-27 11:40:57 · 86 阅读 · 0 评论 -
Jvm堆内存空间
年轻代:这里是所有新对象产生的地方.当年轻代内存空间被用完的时候就会触发垃圾回收.这个垃圾回收叫做Minor(年轻的) GC.年轻代被分为3个部分------Enden(终点)区和2个Survivor(幸存)区.1.大多数新建的对象都位于Eden区2.当Eden区满了就会Minor GC将不再被其他对象引用的对象进行销毁,然后把存活下来的对象移动到一个survior区.3.如果这个survior区也满了就会再次Minor GC,并将剩下存活的对象转移到另一个survivor区.这样在一段时间原创 2021-05-27 11:40:19 · 125 阅读 · 1 评论 -
Jvm的运行过程
1,Java的运行过程: 编译》加载》运行2,类加载主要是由jvm虚拟机负责的,过程非常复杂,类加载分三步 加载 》 连接 》初始化,(这里的加载和本文标题的类加载是不同的,标题的类加载包含了完整的三个步骤)下面详细说说每一步的过程2.1、加载:这个很简单,程序运行之前jvm会把编译完成的.class二进制文件加载到内存,供程序使用,用到的就是类加载器classLo...原创 2019-07-26 09:57:46 · 593 阅读 · 0 评论 -
Jvm的类加载器
1,类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java执行时系统组件,它负责在运行时查找和装入Class字节码文件。2,JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写,因此我...原创 2019-07-26 09:55:40 · 112 阅读 · 0 评论 -
Java的JVM
1,Java由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。2,JVM在它的生存周期中有...原创 2019-07-30 10:40:24 · 201 阅读 · 0 评论