首页 > 编程知识 正文

linux查看jvm参数,linux设置jvm内存参数

时间:2023-05-05 19:32:52 阅读:23705 作者:2599

JVM常规配置概述

堆设置:

-Xms :初始堆大小通常设置为小于4G

-Xmx :最大堆大小通常设置为小于4G

通常-Xms和Xmx的值相同,以防止每次垃圾回收完成时JVM重新分配内存

-XX:NewSize=n设置年轻一代的大小

-XX:NewRatio=n设置年轻一代与老一代的比率

如果设置了-XX:NewSize,则很久没有设置-XX:NewRatio

收集器设置

- xx :用户并行lelgc :并行收集器设置

-XX: UseConcMarkSweepGX :设置并发收集器

垃圾回收统计信息

- xx :打印GC

并行收集器设置:

-XX:ParallelGCThreads=n是根据CPU内核数设置的。 并行收集线程数

配置示例:

系统可用武力内存限制: 32位系统通常限制为1.5G-2G;

64位操作系统对存储器没有限制,但一般设定为4G左右

标准设置:

jva-xmx 3550 m-xms 3550 m-xmn2g-xs 128 k

-Xmn2g :永久世代的一般固定大小为64m

回收器的选择:

从JDK5.0开始,JVM将根据当前的系统配置进行确定

如果同时使用收集器,则为老一代的

JVM调整工具:

Jconsole、visual VM :附带JDK

持久的一代占:

异常: Java.lang.outofmeoryerror : permgenspace

Perm空间已满,新的

解决方案:

1.-XX:MaxPermSize=16m

堆栈溢出

异常: java.lang.StackOverflowerror

说明:一般是递归回不来或循环调用引起的

线程堆栈已满

异常: fatal :堆叠大小至小型

说明: java线程的空间大小有限制。 JDK5.0或更高版本的值为1M。 与此线程相关的数据将被保存。 但是,当线程空间已满时,就会发生上述异常

解决方案:增加线程堆栈大小。 -Xss2m。 但是,此配置不能解决根本问题,还必须检查代码部分是否存在导致泄漏的部分

系统内存已满

异常: Java.lang.outofmeoryerror 3360 unabletocreatenewnativethread

说明:发生此异常是因为操作系统没有足够的资源来生成此线程。 当系统创建线程时,除了为Java堆分配内存外,操作系统本身也必须分配用于创建线程的资源。 因此,如果线程数增加到一定程度,堆可能还有空间,但如果操作系统无法分配资源,则会发生此异常。

也可以通过修改-Xss以减少分配给单个线程的空间,来增加整个系统生产的线程数。

解决:

1 .重新设计系统以减少线程数量

-用XSS调整大小

常用命令:

jmap头

jmap -permstat

jmap -dump

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。