前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM学习系列学习二

JVM学习系列学习二

作者头像
凯哥Java
发布2022-12-15 16:13:37
1550
发布2022-12-15 16:13:37
举报
文章被收录于专栏:凯哥Java凯哥Java

查看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:内存管理优化参数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档