linux下查询java项目中哪个线程方法占用内存高
第一步,使用 top 找到占用 CPU 最高的 Java 进程
第二步,用 top -Hp 命令查看占用 CPU 最高的线程
第三步,用printf “%x” 线程id转换成16进制
第四步,用jstack 线程高的ID > thread_stack.log 保存线程栈信息.
第五步,用转换的16进制在线程栈的信息里全局搜索,线程名称,线程状态,具体的哪一行代码都可以查到
附加:
JVM调优参数
-XX:MaxTenuringThreshold=15 进入老年代对象的年龄,默认15次
-XX:MaxMetaspaceSize 标志设置最大元空间大小,默认值为 unlimited,这意味着它只受系统内存的限制
-XX:+PrintTenuringDistribution来打印出当次 GC 后的年龄。
-Xmx200M 设置堆内存最大值
-Xms200M 设置堆内存最小值
-Xmn50M 设置新生代大小
-XX:+PrintGCDetails 打印GC详细信息