在本文中,我们将带你了解Linux中可用于应用程序的内存总量在这篇文章中,我们将为您详细介绍Linux中可用于应用程序的内存总量的方方面面,并解答linux中可用于应用程序的内存总量是常见的疑惑,同时
在本文中,我们将带你了解Linux中可用于应用程序的内存总量在这篇文章中,我们将为您详细介绍Linux中可用于应用程序的内存总量的方方面面,并解答linux中可用于应用程序的内存总量是常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Linux – /usr/local或/ var用于应用程序数据?、linux – 用于集成自定义Web应用程序的最佳文本搜索引擎?、Linux上用于Java / C ++应用程序的共享内存IPC的很好替代scheme、Linux上的多线程C应用程序中的内存泄漏。
本文目录一览:- Linux中可用于应用程序的内存总量(linux中可用于应用程序的内存总量是)
- Linux – /usr/local或/ var用于应用程序数据?
- linux – 用于集成自定义Web应用程序的最佳文本搜索引擎?
- Linux上用于Java / C ++应用程序的共享内存IPC的很好替代scheme
- Linux上的多线程C应用程序中的内存泄漏
Linux中可用于应用程序的内存总量(linux中可用于应用程序的内存总量是)
$free -m total used free shared buffers cached Mem: 2488 965 1523 0 83 517 -/+ buffers/cache: 363 2124 Swap: 1565 0 1565
通常认为由缓冲区和缓存校正的“空闲”列表示可以自由或可回收的内存,因此可用于应用程序.因此,在上面的示例中,我们将有大约2124 MB可用.
但是,如果正在使用tmpfs,这是不正确的,因为tmpfs使用的任何内存都包含在“缓存”中,但此内存不可回收(this article中的更多信息)
那么我们怎样才能找出实际可用的内存量?
解决方法
Currently,the amount of memory that is available for a new workload,
without pushing the system into swap,can be estimated from MemFree,
Active(file),Inactive(file),and SReclaimable,as well as the “low”
watermarks from /proc/zoneinfo.
更多信息可以在in the kernel commit message找到.
对于早于3.14的内核,there are tools可以以与内核计算方式相同的方式模拟此度量.
Linux – /usr/local或/ var用于应用程序数据?
哪个是最合适的目录?
解决方法
并且,关于/usr/local /:通过在make文件中提供适当的变量,确保打包者可以选择将软件安装到/usr/lib / /usr/share / /usr/bin.
手动安装的软件(即make install等)应该在/usr/local/*中使用,而软件包装通过.rpm / .deb /应该避免/usr/local,并直接安装在/ usr中的相应文件夹下.
linux – 用于集成自定义Web应用程序的最佳文本搜索引擎?
基本上我们希望允许我们的用户搜索他们上传的东西的存储库,以及其他用户标记为公开的任何内容.该解决方案应该在标准的Linux服务器上运行,理想情况下它应该是开源的,但如果价格不高,我也会考虑付费解决方案.
到目前为止,我发现了三个潜在候选人:
> MySQL Full Text Search – 我读过的一些报道说它很慢
> Apache Lucene – 不幸的是用Java编写,但如果必须的话,我会使用它.据说速度快
> Sphinx – 似乎并不那么受欢迎,理想情况下,无论我找到什么解决方案都会得到很多社区支持.
如果我有任何其他好的选择我忽略了,或者您有上述任何一个经验,请告诉我.
解决方法
Linux上用于Java / C ++应用程序的共享内存IPC的很好替代scheme
我目前使用Java和C ++应用程序之间的IPC共享内存,但寻找一个更方便的select。
有人可以build议一个更好的方法相同的性能和速度?
谢谢!
如何获取文件的下一页/部分/视图,如果我使用MapViewOfFile读取文件的一部分?
C,如何在分叉进程上使用POSIX信号量?
如何在Linux中使用共享内存
ipcs不显示我的共享内存和信号量
如何以及何时使用/ dev / shm来提高效率?
在Windows上自动replace内存映射
这是一个安全的方式与subprocess共享只读内存?
写共享内存的频率限制?
如何使用共享内存和信号量来实现pipe道?
指向共享内存段
这取决于您计划如何交互应用程序。 在POSIX环境中,您有管道,共享内存,套接字,信号量和消息队列。 看到这个问题: 比较unix linux IPC获取更多信息。
什么是您的流程(即客户/服务器,生产者,消费者等)的交互模式?
从个人经验来看,我会建议你最好的选择是管道(因为它们只是读取和写入字节的文件)或套接字(因为这两种语言都支持它们)。
正如米克隆所说,这很大程度上取决于你在做什么。 AFAIK,没有任何IPC方法有原生的Java绑定,所以你可能将不得不使用JNI并自己绑定,所以所有不同的方法大致同样困难。 如果你正在做消息传递,我强烈建议使用消息队列。 它们很容易使用(一旦你有绑定),并有良好的性能。 如果你需要“共享”一些资源,那么你可能要坚持共享内存。
因为听起来你有一些客户端/服务器的东西,我会说使用消息队列,UNIX域套接字或命名管道。 它们都涉及拷贝内核中的数据,所以它们不如共享内存那么快,但是它们仍然非常快。 如果你有类似消息的数据(个别的小包),去消息队列。 这可能是最干净的解决方案。 如果您有更多的数据流,请使用管道或套接字。 套接字的优点是,如果你愿意的话,你可以很容易地使它像网络一样透明(比如X11),但是比管道稍微难一些。 性能可能非常相似。
Java虽然可能不是最高效的,但它只支持开箱即用的插件(我记得最好的)。 他们非常灵活,也许没有其他选择那么快。 正如Zifre所说,它为您提供了网络透明度以及语言/绑定透明度的机会。 因为几乎所有的语言都支持现成的套接字库。
当我把效率从窗口扔出去的时候,如果你想把它提高到一个新的水平,你可以把它包装在某种Web服务中。 在消费者上使用嵌入式Web服务器,以便生产者提交他们的数据。
用不同语言编写的应用程序之间进行通信的最简单的方法是IMHO CORBA 。 那里有非常好的开源CORBA ORB 。 我们使用TAO的C + +和JacORB的Java。 还有像OCI和Remedy这样的公司提供技术支持。
我目前使用Java和C ++应用程序之间的IPC共享内存,但寻找一个更方便的选择。
有人可以建议更好的方法,但具有相同的性能速度?
对于简单的共享内存,你甚至不需要特殊的库:
class Main { private static class CustomThread extends Thread { public int x = 0; public void run() { x = 5; } } public static void main(String[] args) { CustomThread t = new CustomThread(); t.start(); System.out.println(tx); System.out.println(tx); } }
局部变量x可以在线程之外访问,允许您使用它来传递信息进出线程。
Linux上的多线程C应用程序中的内存泄漏
我们需要一种可以提供帮助的新工具.我查看了Google Perfomrance Tools,MMGR by Paul Nettle,MemCheck Deluxe.他们都没有给我留下深刻印象.
这个任务有什么好的工具吗?
解决方法
>您的应用程序很可能仍在使用该内存.在这种情况下,您可能拥有Java程序员认为泄漏的内容,例如在结构中输入数据,很少(或从不)删除条目.
>您可能错误地测量了内存的内存使用情况.在Linux上,内存使用量测量并不像它们看起来那么简单.你是如何衡量你的内存使用量的?
>您应该考虑使用您正在使用的任何内存分析工具的应用程序挂钩(Valgrind称之为client requests),以避免报告仅在程序终止时发出的问题.使用这些钩子可能会帮助您精确定位泄漏的位置.
>您应该尝试使用堆分析器(例如Valgrind的massif)来查找具有过多分配内存量的内存分配位置.
>确保您的应用程序中没有使用自定义分配器或垃圾收集器.据我所知,没有user interference,没有内存分析工具可以使用自定义分配器.
>如果您的内存泄漏量足以在可接受的应用程序运行时间内检测到,您可以尝试通过版本控制系统对旧版本进行二进制搜索,以识别引入问题的提交.至少Mercurial
和Git为此任务提供内置支持.
关于Linux中可用于应用程序的内存总量和linux中可用于应用程序的内存总量是的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Linux – /usr/local或/ var用于应用程序数据?、linux – 用于集成自定义Web应用程序的最佳文本搜索引擎?、Linux上用于Java / C ++应用程序的共享内存IPC的很好替代scheme、Linux上的多线程C应用程序中的内存泄漏等相关内容,可以在本站寻找。
本文标签: