相关疑难解决方法(0)

用Java限制线程的CPU /内存使用率?

我正在编写一个运行多个线程的应用程序,并希望限制这些线程的CPU /内存使用量.

对于C++也存在类似的问题,但我想尽可能避免使用C++和JNI.我意识到使用更高级别的语言可能无法做到这一点,但我很想知道是否有人有任何想法.

编辑:增加了赏金; 我想要一些非常好的,深思熟虑的想法.

编辑2:我需要的情况是在我的服务器上执行其他人的代码.基本上它是完全任意的代码,唯一的保证是类文件上会有一个main方法.目前,在运行时加载的多个完全不同的类作为单独的线程并发执行.

它的编写方式,重构为每个执行的类创建单独的进程将是一件痛苦的事.如果这是通过VM参数限制内存使用的唯一好方法,那么就这样吧.但是我想知道是否有办法用线程来做.即使作为一个单独的进程,我也希望能够以某种方式限制其CPU使用率,因为正如我之前提到的,其中一些将立即执行.我不想要一个无限循环来占用所有资源.

编辑3:一种简单的近似对象大小的方法是使用java的Instrumentation类; 特别是getObjectSize方法.请注意,使用此工具需要一些特殊设置.

java memory cpu multithreading throttling

42
推荐指数
3
解决办法
3万
查看次数

设置Java线程的优先级

我有一个程序,运行在几个线程中.主线程与其他线程共享一个对象,在main中我有一个调用:

synchronized(obj){
    do stuff
}
Run Code Online (Sandbox Code Playgroud)

我怀疑主线程是饿死的,无法访问obj.如何提高主线程的优先级或默认情况下它是否已高于其他线程?

java multithreading thread-priority

27
推荐指数
3
解决办法
9万
查看次数

C++ ARM设备上代码优化的技巧

我一直在为ARM设备开发增强现实的C++代码,为了保持良好的帧速率,优化代码非常重要.为了将效率提升到最高水平,我认为收集使编译器生活更轻松并减少程序数量的一般提示非常重要.任何建议都受到欢迎.

1- 避免高成本指令:除法,平方根,sin,cos

  • 使用逻辑移位除以2或乘以2.
  • 尽可能乘以逆.

2-优化内部"for"循环:它们是一个botleneck,所以我们应该避免在里面进行很多计算,特别是划分,平方根.

3-使用查找表来查找某些数学函数(sin,cos,...)

有用的工具

  • objdump:获取已编译程序的汇编代码.这允许比较两个函数并检查它是否真的被优化.

c++ optimization arm

17
推荐指数
2
解决办法
7855
查看次数