1 设置jvm内存大小xmx, xms, Xss
-Xss:规定了每个线程虚拟机栈及堆栈的大小,一般情况下,256k是足够的,此配置将会影响此进程中并发线程数的大小。
-Xms:表示初始化JAVA堆的大小及该进程刚创建出来的时候,他的专属JAVA堆的大小,一旦对象容量超过了JAVA堆的初始容量,JAVA堆将会自动扩容到-Xmx大小。
-Xmx:表示java堆可以扩展到的最大值,在很多情况下,通常将-Xms和-Xmx设置成一样的,因为当堆不够用而发生扩容时,会发生内存抖动影响程序运行时的稳定性
示例,由于处理inc*99c文件时, 文件大小两百多M, 而jvm中实际内存设置的比较小,需要获取文件尾行数据, 代码中是一次性获取文件流进来的,所以超过了报oom
解决方案设置xmx和xms, 以及通过重置流去获取文件尾行数据
2. jdk自带的visualvm可视化性能监控工具
示例: 当时解析authlog文件时, 由于文件有2个G,解析耗时半个小时,通过查看visualvm监控工具,发现日志打印类比较耗时,
因为代码中每次执行打印则会通过发射去创建日志对象,通过优化, 改成全局静态的去创建日志;
3 通过jmap , jstack命令去
标签:文件,常问,面试,Xmx,jvm,大小,JAVA,日志 From: https://www.cnblogs.com/ladeng19/p/17247181.html