Jetty使用内存过大的解决方案
2023-09-27 14:21:05 时间
之前用Jetty做过一个消息通知服务器,主要功能就是其他各个子系统如果有需要push给客户端消息的就把这个消息发给我的Server,我用WebSocket来推送给客户端~
程序上线一段时间之后运维工程师找到我说我的程序占用了16G内存,我的个乖乖,记得设置Xmx为2G的,为么吃掉了这么大的内存呢??!!
经过一番测试,发现用的并不是应用内存,而是系统的内存,这些内存不归应用管,而归JVM管~~
jetty使用的是java的nio ,nio在请求分配bytebuffer时有二种,一种是分配应用内存,一种是分配系统内存~~
如果是嵌入式的方式启动的Server,加上这么两行代码即可。
SelectChannelConnector conn = new SelectChannelConnector();
conn.setUseDirectBuffers(false);
另外,找到Jetty的配置文件,把这个配置写在配置文件里也是OK的~
<Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <Set name="host"><Property name="jetty.host" /></Set> <Set name="port"><Property name="jetty.port" default="8877"/></Set> <Set name="maxIdleTime">300000</Set> <Set name="Acceptors">2</Set> <Set name="statsOn">false</Set> <Set name="confidentialPort">8443</Set> <Set name="useDirectBuffers">false</Set> <Set name="lowResourcesConnections">20000</Set> <Set name="lowResourcesMaxIdleTime">5000</Set> </New> </Arg> </Call>
原文链接:http://www.coderroad.com/blog/15/
相关文章
- Java的内存泄漏
- 读懂操作系统之内存管理总结(八)
- Asp.net core应用在 Kubernetes上内存使用率过高问题分析
- 微服务轮子项目(49) -常见JVM内存错误及解决方案
- 腾讯云服务器被攻击,tsm占用内存过高解决方法
- C++ 内存分区模型
- 待解决问题:c++栈对象的析构、虚拟内存与内存管理的关系、内存管理的解决方案。
- 针对 DialogFragment 状态异常和内存泄漏的解决方案
- 解决JVM最大内存设置问题
- 浅析Java里的内存分析及常量池加强对Java里字符串的理解
- 华为OD机试 - 简易内存池2(JS)| 真题+思路+考点+代码
- JVM的内存区域划分(转)
- Android平台上直接物理内存读写漏洞的那些事
- 关于Cocos的内存管理机制引发一些异常的解决方案
- C# 给对象赋null值会释放内存吗?
- C#内存释放(垃圾回收)
- 利用图文和代码深度解析操作系统OS内存泄漏检测实现原理与算法机制以及常见的泄露原因和解决方案