Articles of Linux操作系统

Eclipse将堆释放回系统

我在Linux(64位)上使用最新的Sun Java 6的Eclipse 3.6,其中包含大量大型项目。 在一些特殊情况下(例如SVN更新),Eclipse需要高达1 GB的堆。 但大部分时间只需要350 MB。 当我启用堆状态面板时,我大部分时间都看到: 350万878M 我用这些设置启动Eclipse:-Xms128m -Xmx1024m 所以大部分的时间都是白白浪费的,只是在短时间内存使用量达到峰值时才使用。 我不喜欢这一点,我希望Eclipse释放内存回到系统,所以我可以用它来做其他程序。 当Eclipse需要更多的内存,而没有足够的可用RAM时,Linux可以将其他正在运行的程序换掉,我可以忍受。 我听说有一个-XX:MaxHeapFreeRatio选项。 但我从来没有想出我有什么价值,所以它的工作原理。 没有任何价值,我尝试曾经有所作为。 那么我怎么能告诉Eclipse(或Java)释放未使用的堆?

符合CSS 2.1的HTML到Microsoft Word的转换?

我在Prince XML中find了一个极好的HTML到PDF转换器。 现在我正在寻找类似的质量从HTML + CSS生成Word文档。 这是在PHP / Linux上。

如何在其默认程序 – Linux中打开文件

如何以编程方式在Linux的默认程序中打开文件(即时通讯使用Ubuntu 10.10)。 例如,打开* .mp3将打开电影播放器​​(或其他)中的文件。 先谢谢你。 斯捷潘

我如何运行一个外部程序?

我在Linux mint 12上。 我想运行一个程序usr/share/application/firefox ,然后在任何地方传递一个string。 我还没有find针对Linux的解决scheme,但从目前为止我所看到的有很多关于Windows的理论。 size_t ExecuteProcess(std::wstring FullPathToExe, std::wstring Parameters, size_t SecondsToWait) { size_t iMyCounter = 0, iReturnVal = 0, iPos = 0; DWORD dwExitCode = 0; std::wstring sTempStr = L""; /* – NOTE – You should check here to see if the exe even exists */ /* Add a space to the beginning […]

ELF文件格式如何定义堆栈?

我正在学习ELF文件格式,所以我编译了一个小程序,从结果可执行文件中删除了部分头文件和它们的内容。 ELF标题包含入口点地址,它指向.text部分的开始。 我还发现包含静态数据的.data节和包含只读数据的.rodata …我希望有一个堆栈的部分,但我找不到该部分。 我也希望在某个时候,ESP被设置在某个部分的顶部,但是我在反汇编中找不到那样的东西。 那么ESP如何获得初始价值呢?

gnuplot上的x轴值

我正在玩gnuplot.My数据集看起来像这样。 1 0.530000 0.510000 2 0.420000 0.310000 4 0.400000 0.160000 8 0.390000 0.070000 16 0.390000 0.040000 32 0.310000 0.020000 64 0.170000 0.020000 128 0.070000 0.000000 256 0.030000 0.000000 512 0.020000 0.000000 1024 0.000000 0.000000 我的gnuplot文件是给予打击。 #!/usr/bin/gnuplot reset set terminal png set ylabel "time in ms" set xlabel "k" set title "update every kth element" set […]

为什么RCX不用于传递参数给系统调用,被R10取代?

根据System V X86-64 ABI ,应用程序中的函数调用使用以下顺序的寄存器来传递整型参数: rdi, rsi, rdx, rcx, r8, r9 但是系统调用参数(除了系统调用号)在另一个寄存器序列中传递: rdi, rsi, rdx, r10, r8, r9 为什么内核使用r10而不是rcx作为第四个参数? 这与r10是不是被保留的事实有什么关系?

如何让更多的内存和避免堆栈溢出大量的recursion?

我正在testing执行大量recursion调用的algorithm的时间。 我的程序在约128k的recursion调用中死亡,这只需要0.05秒。 我想让更多的记忆在我的分析中有更长的时间。 我正在运行Linux和使用gcc。 是否有一个系统调用,或环境variables,或gcc标志,或包装,或什么?

如何在Linux中重新绑定udp套接字

我是一个有经验的Linux套接字编程人员,正在编写一个有很多出接口的服务器应用程序。 现在,服务器套接字与INADDR_ANY一起绑定到进程开始时的随机源端口。 稍后在提交对特定节点的响应时,我需要分配一个固定的源IP地址 。 标准的做法是调用bind。 但是,绑定被调用一次端口号, 连续调用失败,无效的参数错误。 创build一个新的套接字并不是一个好的select,因为在响应某些客户端时,我将不得不经常这样做。 我也探讨了SO和许多套接字选项,如IP_FREEBIND,但它并不完全符合我的scheme。 也许使用IP_PKT_INFO和设置源地址可能会工作,除非它遭受同样的问题,即不允许套接字一旦绑定到INADDRANY重新绑定到一个固定的源IP后者。 有没有办法解除绑定现有的套接字或替代方式来设置传出数据包中的源IP地址? int sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) printf("Failed creating socket\n"); struct sockaddr_in addr; memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons(1500); addr.sin_addr.s_addr = INADDR_ANY; // first bind succeeds if ( (status = bind(sock, (struct sockaddr *) &addr, sizeof(addr))) < 0) […]

不能–enable-pcregrep-libbz2,因为没有findbzlib.h

我正在尝试安装pcre 8.32。 当我试图安装下面的这个教程,我得到这个错误: **Cannot –enable-pcregrep-libbz2 because bzlib.h was not found**. 然后我试了一下: sudo yum install libbz2-dev ,现在是说No package libbz2-dev available.Error: Nothing to do 我完全困惑。 我接下来要做什么?