JVM堆栈内存是决定应用服务器性能的关键指标,通常服务器默认的内存配置都比较小,在较大型的应用项目中,这点内存是不够的,所以须要进行查看与修改Web服务器内存大小,接下来就介绍服务器内存查看的方法以及不一样服务器内存的修改方式。javascript
各应用服务器的内存配置方法不尽相同,以下列出了经常使用服务器的JVM参数(-Xms,-Xmx)配置方法。java
JVM参数定义:web
- Xms: 初始化内存大小ajax
- Xmx: 可使用的最大内存算法
如下示例工具:报表开发工具FineReport浏览器
若是您想要查看应用服务器的内存配置状况,能够启动Web服务器,进入平台系统,URL地址为:http://localhost:8080/WebReport/ReportServer?op=fr_platform,选择管理系统>系统监控>系统状态>内存使用状况,便可查看到当前web服务器的内存使用状况,以下图:服务器
注:若是用户购买了数据决策系统,那么URL地址能够输入http://localhost:8075/WebReport/ReportServer?op=fsjvm
其中:async
空闲内存:204M是指可用剩余内存为:204M。函数
全部内存:247M是指当前调用的内存为:247M。
最大内存:494M是指可调用的最大内存为:494M。
3.1 描述
在使用报表的过程当中有时候会遇到内存溢出的问题,下面简单介绍咱们报表的内存机制以及怎样释放内存。
3.2 内存机制
3.21内存回收机制
Java的内存垃圾回收(GC)机制是从程序的主要运行对象开始检查引用链,当遍历一遍后发现没有被引用的孤立对象就做为垃圾回收。GC为了可以正确释放对象,必须监控每个对象的运行状态。包括对象的申请、引用、被引用、赋值等,GC都须要进行监控。
在Java中,这些无用的对象都由GC负责回收,同时java提供了函数能够访问GC, 如运行GC的函数System.gc(),可是根据Java语言规范定义,该函数不保证JVM的垃圾收集器必定会执行。由于不一样的JVM实现者可能使用不一样的算法管理GC。一般GC的线程的优先级别较低。JVM调用GC的策略也有不少种,有的是内存使用到达必定程度时,GC才开始工做,也有定时执行的,有的是平缓执行GC,有的是中断式执行GC。
致使内存泄漏主要的缘由是,先前申请了内存空间而忘记了释放。若是程序中存在对无用对象的引用,那么这些对象就会驻留内存,消耗内存,由于没法让垃圾回收器GC验证这些对象是否再也不须要。若是存在对象的引用,这个对象就被定义为"有效的活动",同时不会被释放。要肯定对象所占内存将被回收,咱们就要务必确认该对象再也不会被使用。
3.22 中内存管理释放机制说明
FineReport报表后台采用的是纯java语言编写, 所以其内存释放机制与上述保持一致,当客户端与服务器端交互结束(如关闭浏览器页面, 打印结束等), 服务器端会将以前客户端操做消耗的内存释放掉, 即置为可被回收状态, 等候jvm调用gc
3.3中的手动GC方法
FR在1G内存下的临界点应该在130w行*5列左右, 对于某些集成环境来讲, 有多是须要作某些操做后, 将FR占用的内存释放掉, FR里面也提供了响应的接口, 具体使用方法以下所示:
在一个模板中添加一个按钮, 给按钮加上点击事件, 或者直接在js中调用, 内容以下:
$.ajax({ url : FR.servletURL, data : { op : 'fr_utils', cmd : 'gs_gc' }, async : false, })