`
dxm1986
  • 浏览: 436167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Resin关于最小内存设置

 
阅读更多

resin.conf 中有 <min-free-memory>设置,是resin内部有一个thread每隔10秒钟检查JVM剩余内存,如果free memory小于 2*min-free-memory,则执行Runtime.gc() 强制进行GC,如果使用-XX:+DisableExplicitGC 禁用显式调用GC,则该设置无效。

对应的代码如下(com/caucho/server/resin/Resin.java):

[java:firstline[476]] view plaincopy
  1. long minFreeMemory = _server.getMinFreeMemory();  
  2.     if (minFreeMemory <= 0) {  
  3.       // memory check disabled  
  4.     }  
  5.     else if (2 * minFreeMemory < getFreeMemory(runtime)) {  
  6.       // plenty of free memory  
  7.     }  
  8.     else {  
  9.       if (log().isLoggable(Level.FINER)) {  
  10.         log().finer(L().l("free memory {0} max:{1} total:{2} free:{3}",  
  11.               "" + getFreeMemory(runtime),  
  12.               "" + runtime.maxMemory(),  
  13.               "" + runtime.totalMemory(),  
  14.               "" + runtime.freeMemory()));  
  15.       }  
  16.         
  17.       log().info(L().l("Forcing GC due to low memory. {0} free bytes.",  
  18.                getFreeMemory(runtime)));  
  19.         
  20.       runtime.gc();  
  21.         
  22.       if (getFreeMemory(runtime) < minFreeMemory) {  
  23.         _isClosed = true;  
  24.         log().severe(L().l("Restarting due to low free memory. {0} free bytes",  
  25.                getFreeMemory(runtime)));  
  26.         return;  
  27.       }  

 

其中getMinFreeMemory()如下:

 

[java:firstline[580]] view plaincopy
  1. private static long getFreeMemory(Runtime runtime)  
  2.  {  
  3.    long maxMemory = runtime.maxMemory();  
  4.    long totalMemory = runtime.totalMemory();  
  5.    long freeMemory = runtime.freeMemory();  
  6.    // Some JDKs (JRocket) return 0 for the maxMemory  
  7.    if (maxMemory < totalMemory)  
  8.      return freeMemory;  
  9.    else  
  10.      return maxMemory - totalMemory + freeMemory;  
  11.  }  
 

 

计算jvm空余内存的方法值得注意一下:由于JVM可以使用-Xms 和-Xmx 指定启动内存和最大内存,所以计算空余内存的时候,需要考虑到JVM可以分配的最大内存(runtime.maxMemory())和当前可使用的最大内存(runtime.totalMemory()),因此最终的free memory =当前空余内存(runtime.freeMemory())  + 可以分配但还没有分配的内存(runtime.maxMemory() - runtime.totalMemory())

 

--EOF--

分享到:
评论

相关推荐

    resin内存益出后自动重启

    ### Resin内存溢出后自动重启方案解析 #### 背景介绍 Resin是一款高性能、功能丰富的Java应用服务器及Web容器,广泛应用于各种企业级应用程序和服务中。它支持多种编程语言,包括Java、JSP等,并且在性能优化方面...

    java使用apache+resin实现负载均衡设置

    Java 使用 Apache+Resin 实现负载均衡设置 Java 使用 Apache+Resin 实现负载均衡设置是一种常见的解决方案,旨在提高系统的可用性和可扩展性。下面是该方案的详细说明: 一、为什么需要负载均衡? 在实际应用中,...

    resin中关于日志的配置

    这篇博客文章“resin中关于日志的配置”着重讲解了如何在Resin服务器上管理和配置日志系统,这对于监控应用状态、调试问题以及优化性能至关重要。下面将详细阐述相关知识点。 1. **日志的重要性**: - 日志记录了...

    eclipse下resin-debg的设置方法

    Eclipse作为主流的Java集成开发环境,虽然原生不直接支持Resin的调试,但通过一些设置技巧,我们可以在Eclipse下进行Resin的调试工作。本文将详细介绍如何在Eclipse中设置Resin-debg。 1. **创建Debug配置** 首先...

    resin-jvm 调优

    gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了...

    resin3 和 resin4

    3. **内存管理**:Resin3采用了高效的内存管理策略,降低了内存泄漏的风险。 4. **线程池管理**:通过线程池,Resin3能够有效地调度和复用线程,提高系统资源利用率。 5. **负载均衡与集群**:支持多服务器间的负载...

    resin4+wrapper green

    2. `conf`目录:存放Resin的配置文件,如`resin.conf`,在这里可以设置服务器端口、JVM参数、web应用程序的部署路径等。 3. `lib`目录:包含了Resin运行所需的库文件,如JAR包。 4. `logs`目录:存储Resin运行时的...

    resin3 resin3下载

    2. **轻量级**:尽管Resin3支持Java EE标准,但它的设计初衷是作为一个轻量级服务器,相比于其他大型应用服务器,如Tomcat和WebLogic,Resin3具有更小的内存占用和更快的启动时间。 3. **Quercus PHP支持**:Resin3...

    resin服务器有3部分,resin1,resin-webapp,resin-lib,由于大小限制分开传

    通常,Resin的配置文件`resin.conf`位于`resin1`目录下,可以在这里设置服务器的端口、数据源、session管理、集群配置等参数。在`resin-webapp`目录下的`WEB-INF`目录里,可以放置Web应用的`web.xml`部署描述符,...

    resin_3.1中文配置手册.doc

    `&lt;javac&gt;`标签用于配置Java编译器,`compiler`属性可以设置为"javac"、"eclipse"或"internal",这里设置为"internal",意味着使用Resin内置的Java编译器,并通过`args`属性指定编译选项,例如 `-source 1.5`表示支持...

    resin常见有关问题

    【Resin常见有关问题详解】 Resin是一款由CAUCHO公司开发的高性能Web服务器和应用服务器,它专门支持Servlets和JSP,并以其快速的处理能力而受到青睐。Resin内建了HTTP/1.1协议的支持,不仅擅长处理动态内容,而且...

    resin4.0配置文件介绍

    对于单个 Resin 实例的管理,可以通过配置文件 `resin.xml` 来进行详细的设置,包括监听端口、安全设置等。 ##### 1.15-1.17 负载均衡与监控 Resin 还提供了负载均衡的功能,可以配置多个 Resin 实例,并通过负载...

    resin-3.1.10

    8. **内存管理**:Resin使用智能的内存管理策略,如分代垃圾回收,以减少停顿时间并提高性能。 9. **安全特性**:Resin支持基本的认证、授权和SSL加密,确保Web应用的安全性。 10. **日志和监控**:Resin提供了...

    eclipse下的resin配置

    - **Program arguments**:根据 Resin 版本不同,设置 `-conf` 参数指向 `resin.conf` 或 `resin3.conf` 文件。 - Resin 3.x:`-conf"${project_loc}\resin3.conf"` - **VM arguments**:配置虚拟机参数,包括 ...

    resin-4.0.45.zip

    在解压后的`resin-4.0.45`目录下,可以通过修改`conf/resin.conf`进行定制化配置,例如设置服务器端口、JVM参数等。 **应用部署** 部署Java Web应用到Resin,通常需要将WAR文件放在`webapps`目录下,或者通过Resin...

    运维-resin常见问题.txt

    - **调整JVM堆内存大小**:可以通过命令行参数如`-Xmx`来指定最大堆内存大小,例如`-Xmx512m`表示将最大堆内存设置为512MB。 - **使用内存分析工具**:例如`-verbosegc`选项可以启用详细的GC日志记录,通过分析这些...

    resin服务器 linux版本

    2. **轻量级**: 相比其他Java应用服务器,Resin体积小巧,启动速度快,内存占用低。 3. **兼容性**: 支持Java EE标准,包括Servlet、JSP、EJB、JMS等,易于与其他Java技术集成。 4. **灵活性**: 提供了丰富的配置...

    resin-3.1.8

    Resin,全称为Caucho Resin,是一款高效、轻量级的应用...在部署和管理Resin 3.1.8时,需要根据项目需求进行适当的配置调整,如设置虚拟主机、调整内存分配、配置集群等,以确保服务器能够高效、稳定地运行应用程序。

    resin-pro-3.1.14.zip

    根据性能需求,可以调整Resin和IIS的配置,例如调整线程池大小、内存分配、日志级别等。 6. 维护与更新:定期检查Resin和IIS的日志,监控系统的性能和稳定性。如果有新的Resin版本发布,可以考虑升级以获取最新的...

    在Windwos下安装和配置Resin

    此外,还可以通过调整JVM的内存设置,如-Xms和-Xmx,来优化Resin的性能。 总之,Resin的安装和配置是一个相对简单的过程,只需按照上述步骤操作,即可在Windows环境下顺利运行和调试JSP应用。记住,配置过程中遇到...

Global site tag (gtag.js) - Google Analytics