那是什么意思?
在一个项目的说明中,它说"冻结Rails宝石".这与冻结Rails版本有什么不同?
什么是冷冻的?
我在7500多个对象上运行一个Parallel.For循环.在for循环中,我正在为每个对象做很多事情,特别是调用两个Web服务和两个内部方法.Web服务只是检查对象,处理并返回一个字符串,然后我将其设置为对象上的属性.两种内部方法也是如此.
我没有写任何东西到磁盘或从磁盘读取.
我还在带有标签和进度条的winforms应用程序中更新UI,以便让用户知道它在哪里.这是代码:
var task = Task.Factory.StartNew(() =>
{
Parallel.For(0, upperLimit, (i, loopState) =>
{
if (cancellationToken.IsCancellationRequested)
loopState.Stop();
lblProgressBar.Invoke(
(Action)
(() => lblProgressBar.Text = string.Format("Processing record {0} of {1}.", (progressCounter++), upperLimit)));
progByStep.Invoke(
(Action)
(() => progByStep.Value = (progressCounter - 1)));
CallSvc1(entity[i]);
Conversion1(entity[i]);
CallSvc2(entity[i]);
Conversion2(entity[i]);
});
}, cancellationToken);
Run Code Online (Sandbox Code Playgroud)
这是在Win7 32位机器上进行的.
关于为什么当增量器大约在1370左右时突然冻结的任何想法(这是1361,1365和1371)?
关于如何调试这个并看看有什么锁定的任何想法?
编辑:
以下评论的一些答案:
@BrokenGlass - 不,没有互操作.我将尝试x86编译并让你知道.
@chibacity - 因为它是在后台任务上,所以它不会冻结UI.直到它冻结的时间,进度条和标签每秒大约2点.当它冻结时,它就会停止移动.我可以验证它停止的号码是否已被处理,但不再处理.双核2.2GHz的CPU使用率在运行期间最低,每次3-4%,冻结后1-2%.
@Henk Holterman - 到达1360需要大约10-12分钟,是的,我可以验证所有这些记录是否已经处理但不是剩余的记录.
@CodeInChaos - 谢谢,我会试试!如果我拿出并行代码,代码确实有用,它只需要一天又一天.我没有尝试过限制线程数,但是会.
编辑2:
关于Web服务发生了什么的一些细节
基本上,Web服务正在发生的是它们传递一些数据并接收数据(XmlNode).然后在Conversion1进程中使用该节点,该进程又在实体上设置另一个属性,该属性被发送到CallSvc2方法,依此类推.它看起来像这样:
private void CallSvc1(Entity entity)
{
var svc = new MyWebService();
var …Run Code Online (Sandbox Code Playgroud) 我疯狂地搜索了互联网,但是"WTP冻结"或"Eclipse冻结"产生了许多不同的结果,几乎不可能找到合适的结果.我有以下问题.
在HTML或CSS编辑器中,当我意外地将鼠标悬停在属性值上时,Eclipse会在CPU加载100%时挂起3-4秒,然后生成一个工具提示消息,其中包含有关标记及其属性的一些信息.我不需要那些提示.天哪,我甚至不需要语法着色,如果这会阻止我这个挂起.
我尝试禁用所有自动完成功能,看似相关的所有内容,但这并没有改变一点.我找了一个设置来完全禁用WTP而不卸载它,但是再次 - 没有运气.
我使用Eclipse Helios.我有所有最新的插件.如果需要,我会提供任何其他信息.
有没有人有类似的问题,能够解决它?这真让我疯狂.
BOUNTY
赏金将发送给任何找到方法或解决方法的人,这将使弹出窗口合理快速.我在Eclipse的许多地方遇到过这个问题 - 例如PyDev:
我有强烈的程序感觉,这是弹出窗口的一般问题,而不是WTP/PyDev.以下是我已采取的措施:
我的设置是Ubuntu Natty,Oracle Java 1.6 - repos中的最新版本
进一步发现
好吧,我刚刚发现99%的冻结时间花在了一个org.eclipse.swt.internal.gtk.OS._gtk_widget_realize似乎不对的电话里面.有线索吗?
我鼓励所有遇到过这个问题的人在Eclipse bug跟踪器上投票支持这个bug.
我在多线程应用程序中需要保持我的UI(和完整的操作系统)响应之间的问题.
我正在开发一个应用程序(基于c ++和Qt),它同时从多个流接收和转换大量视频帧.
每个流都在其自己的单独工作线程中检索,转换和呈现(使用DirectX).这意味着我没有使用默认的GUI线程来渲染帧.
在功能强大的计算机上我没有问题,因为cpu可以处理所有数据并为GUI线程留出时间来处理用户请求.但是在旧计算机上,它不起作用,CPU 100%用于处理我的数据,并且UI滞后,可能需要10秒才能处理按钮点击.
我想保持我的UI响应.事实上,我希望我的工作线程只有在没有其他动作要做时才能工作.我试图将工作线程优先级更改为低,但它不起作用.我也尝试在工作线程中进行睡眠(10),但因为我可以有很多线程,所以它们不会同时处于睡眠状态,因此它也无法正常工作.
在这种情况下保持UI响应的最佳方法是什么(无论工具包使用什么)?
我最近安装了ubuntu 16.04(自动更新到这个版本),我通常用Java开发,我知道eclipse,所以我安装它,一切都很好.
我配置了所需的一切(Java路径,JDK ......没什么特别的),工作正常,除了Eclipse UI.
每次我创建一个项目时UI都会冻结(虽然项目是正确创建的),每次我运行任何程序时(尽管程序运行正常(不总是正确的xD,但这是我的错)),以及许多其他任务.
知道为什么会这样吗?甚至更好,如何解决?
我还仔细检查了我使用的JRE(因为我发现人们遇到了开源软件的问题),我使用的是oracle的版本(现在还不确定这个名字,抱歉,版本8).它是64位版本的一切.
编辑:我忘了提到我使用火星版.另外,我刚刚安装了NetBeans(8.1),完全相同的问题,然后我认为这是图形驱动程序的问题,再次安装,仍然有同样的问题.不知道现在该尝试什么.
更新:检查日志文件.我觉得没什么奇怪的,但可能会遗漏一些东西:
!SESSION 2015-12-04 13:24:38.930 -----------------------------------------------
eclipse.buildId=4.5.1.M20150904-0015
java.version=1.8.0_66
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=es_ES
Command-line arguments: -os linux -ws gtk -arch x86_64
!ENTRY org.eclipse.core.resources 2 10035 2015-12-04 13:24:40.542
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
Run Code Online (Sandbox Code Playgroud)
更新2:我只是运行@dan建议的命令.这是结果
"main" #1 prio=6 os_prio=0 tid=0x00007f0ec000a000 nid=0x26e0 runnable [0x00007f0ec9a18000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.swt.internal.gtk.OS._gtk_widget_get_allocation(Native Method)
at org.eclipse.swt.internal.gtk.OS.gtk_widget_get_allocation(OS.java:14234)
at org.eclipse.swt.widgets.Control.getBounds(Control.java:832)
at org.eclipse.jface.fieldassist.ControlDecoration.getDecorationRectangle(ControlDecoration.java:1185)
at org.eclipse.jface.fieldassist.ControlDecoration$3.paintControl(ControlDecoration.java:635)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:230) …Run Code Online (Sandbox Code Playgroud) 我正在使用AndEngine制作一款可以处理大量移动精灵的游戏.它是不一致的,但最终我在log cat中得到一条消息(threadid = 3:对信号3作出反应)并且游戏冻结了.这个错误是什么意思?我已经缩小了它发生的代码(它被标记):
private void levelComplete(){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(TestGFX5Activity.this, "Level Complete", Toast.LENGTH_SHORT).show();
}
});
Log.e("Level Complete","Going to reset values");
//Reset values
level++;
fillerCount = (originalNumberOfFillers + level - 1);
areaFilled=0;
fillAreaPercent = 0;
//Rid scene of sprites
for(int x=0;x<=fillerNum;x++){
filler[x].body.setActive(false);
scene.detachChild(filler[x].sprite);
filler[x].active=false;
filler[x].scale=originalSpriteScale;
filler[x].body.setUserData("inactive");
}
levelText.setText("Level: "+Integer.toString(level));
fillersLeftText.setText("Balls left: "+Integer.toString(fillerCount));
percentFilledText.setText("0%");
fillerNum = -1;
Log.e("Level Complete","values reset");
randx = random.nextInt(650) + 25;
randy = random.nextInt(400) + 25;
randix = random.nextInt(10);
randiy = random.nextInt(10);
if(randix%2==0) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个导致操作系统冻结的Android应用程序.
我的问题很简单,但经过漫长的搜索,我已经没有接近答案了.
问题是,沙盒的应用程序怎么能导致整个Android操作系统(4.0.4,4.1.1,4.1.2)冻结?
具体来说,整个操作系统冻结.没有logcat,没有adb,没有!它像操作系统一样可以冻结.该设备是三星Galaxy Tab 2.该应用程序使用usb-serial-for-android项目中UsbManager的库和库.虽然库可能使用NDK,但我的应用程序却没有.本质上,应用程序与专业板串行通信,接收数据和发送串行命令.这是在以这种方式处理的工作线程上完成的:
try {
thread.interrupt();
thread.join();
while(thread.getState() != Thread.State.TERMINATED){
// wait until thread finishes
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
一切正常,直到冻结发生 - 当我断开USB电缆或指示库对象断开连接时.无论哪种方式,整个操作系统都会变得不稳定并立即冻结或再次连接USB(板或计算机).我已将此冻结问题发布到usb-serial-for-android项目但尚未收到任何评论.我相信我在脱离usb时遵循了正确的协议.
我知道很多事情都可能出错 - 我的应用程序可以崩溃等.人.但是沙盒应用程序又是如何使操作系统崩溃的 - 如果能够做到这一点,它似乎并不是非常沙盒化的.
UPDATE
我经过多次实验后发现,通过删除thread.interrupt();它的工作线而不会崩溃应用程序或冻结操作系统.如果在没有先拆卸USB的情况下拔掉USB,它仍会冻结操作系统.
我仍然希望了解沙盒应用程序如何冻结整个操作系统.这里有评论回避答案,但不仅仅是答案.
我在Debian 7.6(wheezy)上使用tmux 1.6-2.
我打开一个新会话并启动一个长时间运行的脚本,它以进度条和活动指示器的形式提供更新(旋转栏:/ - \| /).
当我分离并重新连接时,一切仍然很好.但经过一段随机时间后我重新连接屏幕内容被卡住了.没有旋转杆,没有进展.我调查了以下内容:
很感谢任何形式的帮助.
我遇到了这个问题,并没有明确的解释如何解决这个错误.
每当我尝试保存使用R的内部编辑器编写的文件时,OS X Mavericks的R(v.3.1.2)的最新版本在Yosemite中冻结.当你尝试source一个功能时它也会冻结.
编辑:这应该是一个自我回答的问题,但我找到了一个更好的答案,所以我将其标记为答案.
编辑:我发现这是一个网络问题,但我还没有关于如何修复它的答案,所以希望其他人知道有关它的任何信息:
当我在 Nginx 容器内时,我可以像这样查询 node.js:
curl http://192.168.65.2:3001/api/getTest
Run Code Online (Sandbox Code Playgroud)
这确实有效,但与下面的 Nginx 具有相同的不稳定行为。因此,由于我不明白的某些网络原因,它确实主要在后端超时。
所以当我从 Nginx 容器运行 ab 时:
> ab -n 10000 -c 5 http://192.168.65.2:3001/api/getTest
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.65.2 (be patient)
apr_pollset_poll: The timeout specified has expired (70007)
Total of 16 requests completed
Run Code Online (Sandbox Code Playgroud)
这确实与我从 Nginx -> 后端看到的行为相同。考虑到node.js工作正常(直接从下面的node.js上的ab看到;我什至同时运行了两者;node.js版本总是以0个错误完成,来自Docker的ab永远不会正确完成,如上和下所示)。
-------- 老问题,需要了解完整的案例:
我有一个标准的 nginx docker 镜像:
image: nginx
端口映射:
- "8080:80"
我有一个节点服务器在 docker 外部运行,节点 v17.3.0 …