Articles of 运行时

在Linux中测量内存使用情况

我正在testing一段代码的内存消耗,使用: long totalMemory = Runtime.getRuntime().totalMemory(); long freeMemory = Runtime.getRuntime().freeMemory(); 使用的内存是totalMemory和freeMemory之间的区别。 我用相同的条件启动并运行同一个程序三次。 但是使用的内存量差别很大: 1120M 802M 312M 什么可能导致这个? 我应该把这三个的平均值作为代码的内存使用情况吗? 第一次这样做,并感谢有关的任何见解。

在Visual Studio中,Linux中相应的库是作为/ MTd的?

这是一个问题: 我在Windows上写了一段代码。 当使用/MT选项时,答案是错误的。 当简单地切换到/MTd ,答案是正确的。 现在我正在移植这个代码到Linux。 使用以下命令的答案是错误的: g++ -Ofast -o test test.cpp 。 另外,我很确定这是唯一的问题。 我已经安装了libc6 , libc6-dbg , libc6-dev , libstdc++-4.8-dev , libstdc++6和libstdc++6-4.8-dbg 。 在这种情况下有什么问题,我该如何解决? 更新:问题解决了。 代码可以在Windows(debugging和发布模式)和Linux上正确运行,并具有各种优化选项。 有可变的初始化问题。 感谢大家。

在Linux / Bash中测量程序执行时间的问题

希望不是这个问题的一个骗局 我试图用时间函数来确定指定程序运行时间的曲线。 我想要做的是自动化这个过程,以获得数百点的数据在Excel中的graphics,但是我在Linuxterminal上运行时得到不同的输出与bash脚本。 这是我从terminal上运行时得到的结果: time program_1 500 > 0.004u 0.000s 0:00.00 0.0% 0+0k 0+0io 0pf+0w 这里是我的bash脚本(第一个参数是程序,第二个是数字) #!/bin/bash time $1 $2 在这里…我的输出是不同的,即使当我以字面的方式回应上述声明,它似乎是完全相同的调用。 > sh runner.sh program_1 500 > 0.00user 0.00system 0:00.00elapsed 400%CPU (0avgtext+0avgdata 3488maxresident)k0inputs+0outputs (0major+275minor)pagefaults 0swaps 为什么区别?

Linux CFS调度程序如何防止处理器挨饿导致任务执行很小的vruntime?

所以在任务完成后,它会被重新插入到红黑树中。 如果任务之前已经睡了很长时间,导致与runqueue中的其他任务相比vruntime很小,那么它将作为红黑树中最左边的节点重复插入,对吧? 因此,它总是会被挑选作为下一个运行的任务? 我已经检查了core.c和fair.c中的源代码,我没有看到这个任务应该让步到其他任务的地方。 虽然在函数pick_next_entity()中,我确实看到了一些任务,例如cfs_rq-> next,cfs_rq-> last等等,这可能会有更高的运行优先级,我不认为这是防止任务很小的正确位置vruntime从一个处理器花了很长时间,对吧? 有人有线索吗? 谢谢,

bash脚本kill命令超时后

我有bash脚本,为循环中的许多文件工作。 它编译,检查结果等。现在我想在一个thouse文件里面的无限循环的情况下作出安全。 如:如果5分钟后没有完成。 杀死进程并提供相关信息。 gcc -Wall -o "${FN}_execute" ${FN} 2> ${FN}_c_compilation.txt ./${FN}_execute $PARAM > ${FN}_c_result.txt 怎么做?

Java Runtime执行与命令行不同的内部程序吗?

我试图编译一些Java文件使用Runtime.getRuntime.exec(命令)和即时通讯生成命令。 下面的代码显示了我在做什么: String command = "javac "; for(String s: this.getPackages()) { command = command + "/home/benuni/CompileFiles/" + project + "/" + s + "/*.java "; } try { System.out.println("command: '"+ command +"'"); Process pro = Runtime.getRuntime().exec(command); printLines(" stderr:", pro.getErrorStream()); pro.waitFor(); 这是给出以下输出: command: 'javac /home/benuni/CompileFiles/HelloWorldProject/HelloWorldPackage/*.java ' stderr: javac: file not found: /home/benuni/CompileFiles/HelloWorldProject/HelloWorldPackage/*.java stderr: Usage: javac <options> […]

Java进程报告“不正确”的可用处理器数量

我在一个8节点的NUMA机器上运行一个Java 1.6进程,使用: numactl –cpunodebind=0 java -server com.foo.Bar 每个节点有8个CPU,由numactl –hardware报告: available: 8 nodes (0-7) node 0 cpus: 1 2 3 4 5 6 7 8 node 0 size: … node 0 free: … node 1 cpus: 9 10 11 12 13 14 15 16 node 1 size: … node 1 free: … … node 7 cpus: […]

查找符号时,程序不会从正确的库中search

我将两个类和库添加到系统中, parent.so和child.so派生出来。 问题是当程序加载的child.so它不能从parent.sofind父节点的虚函数的定义。 怎么了, nm -D child.so会给出类似的东西(我只是改了名字) U _ZN12PARENT15virtualFunctionEv 该程序将崩溃运行 _handle = dlopen(filename, RTLD_NOW|RTLD_GLOBAL); //filename is child.so 它会给LD_DEBUG = libs一个错误 symbol lookup error: undefined symbol: _ZN12PARENT15virtualFunctionEv (fatal) 我不能解释的是,我尝试LD_DEBUG = symbols使用GDB的LD_DEBUG = symbols ,运行dlopen ,日志显示它试图查找系统中除了parent.so ,其中符号定义的所有库。 但是,从库日志parent.so已经加载和代码运行,它是在所有其他库相同的path。 …… 27510: symbol=_ZN12PARENT15virtualFunctionEv; lookup in file=/lib/tls/libm.so.6 27510: symbol=_ZN12PARENT15virtualFunctionEv; lookup in file=/lib/tls/libc.so.6 27510: symbol=_ZN12PARENT15virtualFunctionEv; lookup in file=/lib/ld-linux.so.2 27510: child.so: error: […]

如何在运行时将参数放入函数中?

所以我在我的c ++程序中使用execlp。 execlp的forms是“int execlp(const char * file,const char * arg0,…,const char * argn)”,这意味着它可以采用任意数量的参数。 我只是想知道,有什么办法可以在运行时将这个函数放在这个函数里面? 由于参数是由用户提供的,因此我无法知道参数的确切数量。 当然,我可以从一开始就挑出一大堆可笑的数字,但这样做效率不高。我需要一个更有效的方法来让我在运行时提出争论。

如何在ubuntu 10.04环境下执行命令(带参数)

我创build了一个独立的应用程序,其目标是执行一个命令(带有例如:gedit文件名)。 如何通过java编程来做到这一点。 我尝试了下面的一段代码,但它不工作。 String[] command = new String[]{"gedit", "abc"}; Process child = Runtime.getRuntime().exec(command); 我已经尝试了exec()命令的各种组合,也使用了JavaProcessBuilder多次,但我似乎没有得到解决这个问题。 任何人都可以请帮我这个。 请尽量给代码,我已经访问了很多链接,但都是徒劳的。 请帮忙。 -提前致谢