JVM内存优化怎么做
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"JVM内存优化怎么做",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JVM内存优化怎么做"吧!在Eclipse上安装MAT(MemoryA
千家信息网最后更新 2025年12月01日JVM内存优化怎么做
本篇内容主要讲解"JVM内存优化怎么做",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JVM内存优化怎么做"吧!
在Eclipse上安装MAT(MemoryAnalyzer Tool)插件,官网链接(https://wiki.eclipse.org/MemoryAnalyzer)
步骤如下:
点击Help,Install New Soft,就出现了以下Install界面:然后我们点击ADD,在弹出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.8/update-site/,确定后,
点击Select All,点击Next,之后就一直确定,就能安装了。安装之后需要重启Eclipse.
分析命令
// -Xms8m -Xmx8m -XX:+PrintGCDetails// 打印垃圾回收信息 //-Xms8m -Xmx32m -XX:+HeapDumpOnOutOfMemoryError//生成内存快照文件 查看错误信息
package com.shi.jvm;import java.util.ArrayList;import java.util.List;/** * Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main" * @author shiye * GC跟踪: -verbose:gc -XX:+PrintGCDetails 打印GC详细信息 -XX:+PrintGCTimeStamps 打印CG发生的时间戳 -Xloggc:log/gc.log 指定GC log的位置,以文件输出 帮助开发人员分析问题堆: -XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息 -XX:+TraceClassLoading 监控类的加载 -XX:+PrintClassHistogram 按下Ctrl+Break后,打印类的信息: -Xmx -Xms 指定最大堆和最小堆 -Xmx20m -Xms5m -Xmn 设置新生代大小 -XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值 新生代:老年代=1:4,即年轻代占堆的1/5 -XX:SurvivorRatio 设置两个Survivor区和eden的比 Survivor :eden=2:8,即一个Survivor占年轻代的1/10 -Xmx20m -Xms20m -Xmn1m -XX:+PrintGCDetails 结果: Exception in thread "main" [Full GC (Ergonomics) java.lang.OutOfMemoryError: GC overhead limit exceeded [PSYoungGen: 512K->0K(1024K)] [ParOldGen: 18595K->517K(18944K)] 19107K->517K(19968K), [Metaspace: 2625K->2625K(1056768K)], 0.0077164 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] at java.lang.Integer.toString(Unknown Source) at java.lang.String.valueOf(Unknown Source) at com.shi.jvm.OOMTest.main(OOMTest.java:58) -XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件 -XX:+HeapDumpPath 导出OOM的路径 -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump XX:OnOutOfMemoryError 在OOM时,执行一个脚本 "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p" 当程序OOM时,在D:/a.txt中将会生成线程的dump 可以在OOM时,发送邮件,甚至是重启程序 总结:根据实际事情调整新生代和幸存代的大小 官方推荐新生代占堆的3/8 幸存代占新生代的1/10 在OOM时,记得Dump出堆,确保可以排查现场问题栈: -XX:PermSize -XX:MaxPermSize 设置永久区的初始空间和最大空间 他们表示,一个系统可以容纳多少个类型 -Xss 通常只有几百K 决定了函数调用的深度 每个线程都有独立的栈空间 局部变量、参数 分配在栈上 * */public class OOMTest { public static void main(String[] args) { List list = new ArrayList(); int i = 0; while(true) { //public native String intern(); list.add(String.valueOf(i++).intern()); } }} 
到此,相信大家对"JVM内存优化怎么做"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
新生
新生代
信息
内存
文件
空间
年轻
内容
大小
实际
年代
插件
程序
线程
问题
永久
分析
学习
生成
更深
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
权限数据库表设计
基于过程的软件开发实践课程设计
济南软件开发定制如何收费
软件开发的工资都高吗
重庆市网络技术人员去哪里找
app商务软件开发工具
网络安全产业发展阶段研究
苹果手机应用服务器错误怎么办
互联网 农业科技项目
华为做软件开发能干到多久
网络安全和信息化工作自评
恒隆网络技术有限公司
杭州游戏软件开发郭瑞
苏州app应用软件开发公司
中国有没有国家网络安全局
成思鑫火软件开发
软件开发kapphk
网络安全防护等级评估
怎么停止服务器
网络安全保险的需求性
网络安全合作受害者
网络安全科技馆现状
博山设备软件开发
附加数据库测试连接失败
英雄联盟服务器是在k8s吗
关系数据库的概念模式是
数据库文件无限复制
idc服务器租用 增值税
大华存储服务器管理地址
计算机三级网络技术考试重