linux-3 jvm内存调优

本文探讨了Java在Linux环境下的项目问题,重点介绍了JVM的内存管理机制,包括新生代、老年代、Eden、Survivor空间等。JVM调优主要关注堆、栈、方法区的内存设置,如-XX选项参数。文章提及了对象年龄、晋升策略以及预tenure阈值。虽然未深入讨论具体的调优步骤和日志分析,但为理解JVM内存管理提供了基础。
摘要由CSDN通过智能技术生成

前言

在linux部署的java项目,通常会因为低质量代码或者服务器的资源瓶颈产生一些不可预知的问题。

一、java的内存管理机制

因为jvm虚拟机的自动内存管理,使得开发人员减少了手动清理内存的操作,在这里不过多进行描述jvm,简单讲一下机制。

基本常说的jvm调优,也就是针对于jvm中的堆进行调优操作。

Java堆是垃圾收集器管理的主要区域,因此很多时候也被称作"GC堆",从内存回收的角度看,现在收集器都基本采用分代回收的算法 所以Java堆呢还可以细分为:新生代、老年代。 再细致一点的有:Eden空间、From Survivor空间、To Survivor空间。

二、jvm调优

JVM提供 -XX:+PrintGCDetails这个收集器日志参数

栈的空间大小设置:-Xss 为jvm启动的每个线程分配的内存大小

堆的空间大小设置:-Xms 设置堆的初始值 -Xmx 设置堆的最大值

方法区空间大小设置:-XX:MetaspaceSize 方法区的初始值大小
-XX:MaxMetaspaceSize 方法区的最大值

分代收集的默认比例

young:old 1:2 可以通过参数 –XX:NewRatio 来指定

eden:s0:s1 8:1:1 可以通过参数 –XX:SurvivorRatio 来设定

占用内存较大的对象,对于虚拟机内存分配是一个坏消息,虚拟机提供了一个 -XX:PretenureSizeThreshold 让大于这个设置的对象直接存入老年代。

长期存活的对象会存入老年代。虚拟机给每个对象定义了一个Age年龄计数器,对象在Eden中出生并经过第一次Minor GC后仍然存活,对象年龄+1,此后每熬过一次Minor GC则对象年龄+1,当年龄增加到一定程度默认15岁,就会晋升到老年代。
可通过参数设置晋升年龄 -XX:MaxTenuringThreshold

总结

回收机制没说,调优日志参数没说,如何调优没说??

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值