JVM核心基础知识

文章目录

  • JVM的历史
  • Java内存结构
    • 方法区
  • JVM参数配置
    • 配置参数详解
    • 设置最大堆内存
    • 设置新生代比例参数
    • 设置新生与老年代代参数
    • 设置栈内存大小
    • JVM参数调优总结
    • 内存溢出和内存泄漏的区别
  • JVM垃圾回收机制概述
    • finalize作用
    • 垃圾回收机制算法
      • 如何找到找到垃圾(确定谁是垃圾)
        • 引用计数法
        • 可达性分析算法
      • 垃圾如何回收(找到了垃圾,如何回收)
        • 标记清除算法
        • 标记-压缩算法
        • 复制算法
        • 分代收集算法
      • 为什么老年代使用标记压缩、新生代使用复制算法。
        • 垃圾回收时的停顿现象
  • 垃圾收集器
    • 什么是Java垃圾回收器
    • 串行回收器(Serial Collector)
    • 并行回收器(ParNew回收器)
    • 并行回收集器(ParallelGC)
    • 并CMS(并发GC)收集器
    • G1回收器
  • Tomcat配置调优测试
    • Jmeter压力测试工具

JVM的历史

所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为
系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,
提供了一个可以运行完整操作系统的软件平台。
程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Java
自己码指令。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
Java发展至今,出现过很多虚拟机,做初Sun使用的一款叫ClassIc的Java虚拟机,到现在引用最广泛的是HotSpot虚拟
机,除了Sum意外,还有BEA的Jrockit,目前Jrockit和HostSopt都被oralce收入旗下,大有整合的趋势。

Java内存结构

JVM核心基础知识

JVM核心基础知识

设置新生代比例参数

参数: -Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

设置新生与老年代代参数

-Xmn 新生代大小,一般设为整个堆的1/3到1/4左右
-XX:SurvivorRatio 设置新生代中eden区和from/to空间的比例关系n/1

-Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
-Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
-XX:NewRatio=2
总结:不同的堆分布情况,对系统执行会产生一定的影响,在实际工作中,
应该根据系统的特点做出合理的配置,基本策略:尽可能将对象预留在新生代,
减少老年代的GC次数。
除了可以设置新生代的绝对大小(-Xmn),可以使用(-XX:NewRatio)设置新生代和老年
代的比例:-XX:NewRatio=老年代/新生代

Tomcat内存溢出在catalina.sh 修改JVM堆内存大小

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

来源:裸奔的肉夹馍

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月18日
下一篇 2019年9月18日

相关推荐