重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你可以先用内存监控工具,进行监控,看看这个功能到底用多少内存。如果不多,其实都不需要实现你说的代码监控的。如果你要使用代码监控,你可是使用Runtime类的几个属性,MaxMemory、FreeMemory、TotalMemory。然后实现个线程,在下载pdf功能前开启线程,然后完毕时关闭线程,如果内存即将溢出(设定个阈值,比如说15%),就报错,跳转到错误页面。
沅陵ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
要定位到行,代码要debug编译,至少要带上行信息。
线程占用内存高低,可以用jmap做heap dump出来给MomoryAnalysis分析他可以按线程统计,一般也可以用它来找出造成OOM的原因。
线程占用CPU,上述内存的问题是一个方面,另外也可以jstack打线程栈来分析。Linux上ps -T -p可以看底层线程的CPU占用(Windows上需要额外按工具),记得线程编号可以在jstack打出来的线程栈中检查。
问题出现在“需要重复进行的操作”这个上面!
首先要清楚,java中的内存分两种,一个是堆内存,一个是栈内存!内存泄露到底在哪个区间中泄露了呢,看你“需要重复进行的操作”这里面的代码怎么写了!如果这里面在不断的对变量进行操作的话,内存泄露是肯定的,因为要释放栈内存必须等该方法结束才会释放其变量!很明显,你这个方法永远不会结束!至于“jvm的初始化造成这样的结果”不会的!jvm的初始化只是把字节码加载进内存里而已!不会造成这样的结果!
呵呵,希望对你有帮助!
其实首先你可以先使用监控内存工具,来监控下,如果内存消耗不是很大,其实就不用那么麻烦了。如果实在要加个内存监控程序,可以使用Runtime中的MaxMemory、TotalMemory、FreeMemory来实现。注意这些都是JVM的内存,请不要和系统的内存混淆。另外如果要实时监控,必须还得弄个线程类。大致思路是这样,至于内存溢出,你可以设定一个内存阈值,比如说15%的剩余内存设置,就报内存即将溢出的错误。
应该是你的代码疯狂地创建了String对象造成吧。
应为javaVM不是立即释放内存,她存储对象也不知是其数据,还有很多方法之类的都是数据,所以你new string实际上是生成了很多的东西。
使用java自带的性能分析工具jvisualvm , 可以方便的查看内存, 对象, 线程等多种信息.
win+R 然后输入 jvisualvm 回车即可
效果如下图