java - 高性能 rtsp 服务器

标签 java c jvm sip rtsp

我想实现一个高性能的 rtsp 服务器来处理 vod 请求——它只处理信令请求,不需要流式传输媒体文件。我已经完成了一个基于Mina网络框架用Java编写的版本,性能似乎不是很高。

据我所知,高性能 SIP 服务器(例如 VoIP 服务器)是用 C(例如 OpenSIPS、Kamailo)编写的,我应该为我的项目使用 C 还是 C++ 以获得显着的性能提升?

顺便说一句。我找到了一些关于 OpenSER 作者用 C 语言编写的原因的解释: “另一方面,在用 Java 开发 SIP 应用程序时,垃圾收集器可能会造成很多麻烦。当垃圾收集器清理内存时,用 Java 编写的负载过重的服务器会停止工作。垃圾收集器造成的延迟甚至可能是超过 10 秒。这种延迟是 Not Acceptable ” 现在这是否意味着我也应该使用 C?

最佳答案

这里有很多变量,语言可能不是决定因素。 MINA 的作者 Trustin Lee 后来创建了 Netty ,它确实提供了非常高的性能。 Lee himself says MINA 具有“相对较差的性能”,因为它提供的某些功能过于复杂,与核心绑定(bind)得太紧。因此,您可能会在完全重写所有内容之前查看 Netty。

如果您使用的是 Oracle 的 JVM,那么您就是在使用一个极度优化的运行时系统,该系统可以识别代码中的热点(因此得名“HotSpot”)并在运行时积极优化它们。很久以前您就可以说,事实上,Java 代码的运行速度比 C 代码慢。 写得好,优化 C 代码在某些特定任务中可能比等效的 Java 代码表现更好,但是从那里进行概括可能不再合适,当然您的代码必须承担一些负担JVM 使用 Java 为您承担。另请注意,您可以对 tune the JVM's garbage collector 执行多项操作。 ,例如比足迹和长时间停顿更喜欢一致性和短暂停顿。

显然 C 语言有几个优点(靠近机器有时正是您想要的),某些任务的显式内存管理也是如此。

关于java - 高性能 rtsp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9289683/

相关文章:

java - 使用java将XML文件转换为CSV文件(具有多个元素值)

c - 关于什么时候我们应该使用关键字 'volatile'?

java - 关于Java应用程序的内存使用

java - java中的对象堆总是没有足够的空间

java - NewRatio 参数不适用于 CMS 垃圾收集器

java - paintFill 函数的实现

java - “@layout”未在 ExpandableLayout 库的 ExpandableLayout 的 XML 实现中定位资源

java - Java EE 中的 Facade 有何意义?

c - && 和 || 结合的变量

c - 需要换行字节来发送该数据