JVM学习系列学习二

作者: 凯哥Java | 来源:发表于2019-06-30 15:00 被阅读0次

查看JVM的运行参数

在有些时候我们需要查看JVM的运行参数,这个需求可能有以下两种情况:

1:运行Java命令时候打印出运行参数

2:查看正在运行的Java进程中的参数。

运行Java命令时候打印参数:

运行Java命令时候打印参数,需要添加-XX:+PrintFlagsFinal参数即可。

三:JVM内存模型

JVM的内存模型在1.7和1.8之间有较大的区别。我们先来看看1.7的堆内存模型。

下图就是JDK1.7堆内存模型:

简图:

Young年轻代:

在Java中绝大多数新建的Object对象,都是在年轻代区的。先进入eden区。当Eden内存满了之后,会执行一次或多次GC回收之后,没有被回收掉的对象将会被移动到S0或者S1区。

注:Eden的S0、S1的比例为:8:1:1

Tenure(Old Memory)老年代:

在被执行多次GC之后,任然没有没回收的对象,将会被从S0或S1区移动到Old内存区。

Perm(Perm Gen):永久区—在JDK1.8之后就没有这个了。

永久区是一个特殊的JVM内存区。这个区域是用来存储描述Class的元数据。

抛出:java.lang.OutOfMemoryError:PermGen。这个异常的时候,无论怎么设置-Xmx也不管用的。如果想设置这个区域大小参数使用的是:-XX:PermGen,-XX:MaxpermGen(不同版本略有变化)。

下节预告:

1:堆、栈、永久区比较

2:内存管理优化参数

关注凯哥公众号:凯哥Java(kaigejava)

凯哥个人博客:www.kaigejava.com

相关文章

  • JVM学习系列学习二

    查看JVM的运行参数 在有些时候我们需要查看JVM的运行参数,这个需求可能有以下两种情况: 1:运行Java命令时...

  • JVM学习系列学习五

    我们接着上一篇文章讲解: 4.2:查看内存中对象数量及大小 查看所有对象,包括活跃及非活跃的。使用命令: Jmap...

  • JVM学习系列学习六

    本文是《JVM学习系列》教程中第六篇文章。不是单篇的。 我们接着上一篇讲解: 4.5:通过MAT工具对dump文件...

  • JVM学习系列学习七

    5:实战:内存溢出的定位与分析 内存溢出在日常工作中,这个错误很容易遇到。遇到内存溢出,首先我们需要快速定位内存溢...

  • JVM学习系列学习四

    我们接着上一篇讲解: 使用命令查看对内存使用情况 使用到的命令:jstat Jstat:此命令可以查看对内存各个部...

  • JVM学习系列学习一

    本文主要内容: ​ 一:为什么要对JVM进行优化? 我们在自己电脑上进开发的时候,几乎很少考虑对JVM进行优化。但...

  • JVM学习系列学习三

    我们接着上一篇文章讲解: 堆、栈、永久区比较 Heap(堆内存): 在Java中,创建的所有引用对象类型,都在堆内...

  • 科学计算系列学习 02:Pandas

    科学计算系列学习 01:Numpy科学计算系列学习 02:Pandas科学计算系列学习 03:Matplotlib...

  • JVM系列学习随笔(一)

    虚拟机 JVM:JVM全称Java Virtual Machine(Java虚拟机),是一个虚构出来的计算机,作用...

  • 经济金融系列学习(完整版)

    目录 我们为什么要学习金融?经济金融系列学习:为什么我们要学习金融? 创业者眼中的新世界经济金融系列学习:创业者眼...

网友评论

    本文标题:JVM学习系列学习二

    本文链接:https://www.haomeiwen.com/subject/vilbcctx.html