更新:这看起来像一个内存问题.一个3.8 Gb的Hprof文件表明,当发生"阻塞"时,JVM正在转储它的堆.我们的运营团队发现该站点没有响应,进行了堆栈跟踪,然后关闭了该实例.我相信他们在堆转储完成之前关闭了网站.日志没有错误/异常/问题证据 - 可能是因为JVM在生成错误消息之前被杀死了.
原始问题我们最近出现了应用程序出现的情况 - 最终用户 - 要挂起.我们在应用程序重启之前得到了一个堆栈跟踪,我发现了一些令人惊讶的结果:527个线程,463个线程状态为BLOCKED.
在过去 过去被阻塞的线程通常有这个问题:1)一些明显的瓶颈:例如一些数据库记录锁定或文件系统锁定问题导致其他线程等待.2)所有被阻塞的线程将阻塞相同的类/方法(例如jdbc或文件系统clases)
不寻常的数据 在这种情况下,除了应用程序类(包括jdbc和lucene调用)之外,我还看到了各种类/方法被阻止,包括jvm内部类,jboss类,log4j等.
问题 是什么会导致JVM阻止log4j.Hierarchy.getLogger,java.lang.reflect.Constructor.newInstance?显然有些资源"稀缺",但哪些资源?
谢谢
将
堆栈跟踪摘录
http-0.0.0.0-80-417" daemon prio=6 tid=0x000000000f6f1800 nid=0x1a00 waiting for monitor entry [0x000000002dd5d000]
java.lang.Thread.State: BLOCKED (on object monitor)
at sun.reflect.GeneratedConstructorAccessor68.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.jboss.ejb.Container.createBeanClassInstance(Container.java:630)
http-0.0.0.0-80-451" daemon prio=6 tid=0x000000000f184800 nid=0x14d4 waiting for monitor entry [0x000000003843d000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getMethod0(Class.java:2670)
"http-0.0.0.0-80-449" daemon prio=6 tid=0x000000000f17d000 nid=0x2240 waiting for monitor entry …Run Code Online (Sandbox Code Playgroud) java garbage-collection locking blocking concurrent-programming
作为我工作的一部分,我经常需要可视化复杂的 3 维密度。我使用的一个程序套件将密度的径向分量输出为对数网格上的一组 781 个点,ri = (Rmax/Rstep)^((i-1)/(pts-1)乘以球谐函数。对于低对称性系统,球谐函数的数量可以相当大以确保精度,例如,一个系统需要对应于 的 49 个谐波lmax = 6。因此,要在 Mathematica 中使用这些数据,我需要计算最多 49 个插值函数的总和,每个函数都乘以不同的球谐函数。在使用 v.6 并使用Interpolation和 设置构建插值径向函数时r = Sqrt(x^2 + y^2 + z^2),我会 ContourPlot3D在一个多小时后停止,没有任何显示。这包括将InterpolationOrder和 都减少MaxRecursion到 1。
出现了几种替代方案:
ListContourPlot然后使用。Piecewise将它们缝合在一起。(这本身就出现了,因为我可以使用简化来帮助降低结果函数的复杂性。)我最终使用了两者,因为InterpolatingFunction它的评估有明显的延迟,并且有多达 49 个插值函数需要评估,任何延迟都会变得明显。另外,ContourPlot3D样条线速度更快,但它没有给我带来我想要的速度。
我坦白承认,我没有Interpolation在 v.7 上尝试过,也没有在升级后的硬件(G4 v. Intel Core i5)上尝试过。然而,我正在寻找当前方案的替代方案;最好是我可以ContourPlot3D直接使用的。我可以尝试其他形式的样条曲线,例如B-spline,并可能将其与 结合起来UnitBox而不是使用Piecewise.
编辑:为了澄清,我当前的实现涉及为每个径向部分创建一阶样条,将每个样条乘以各自的球谐函数,对Simplify每个径向间隔上的方程求和并进行求和,然后使用Piecewise将它们绑定到一个函数中。因此,我的实现是半解析的,因为球谐函数是精确的,并且只有径向部分是数值的。这是我希望能够使用 的部分原因 …
我正在使用Binding IsAsync属性来保持UI响应并从属性的get访问器加载数据,并且在使用MVVM时被证明是一个不错的选择.这种方法很棒,不需要任何手动代码来进行异步操作.我的dataload花费几秒钟的时间很少,在这段时间内很难区分"无数据"和"数据加载".是否有一个属性,我可以检测绑定"IsBusy"或"正在加载"的状态,以便我可以显示加载操作未完成的消息?
任何帮助表示赞赏.
几个小时的文件/委员会/邮件列表并且没有进展我可能会问你:我如何'编码'我的数据用于使用libpq进行二进制传输PQexecParams(.)?
简单变量只是大端序:
PGconn *conn;
PGresult *res;
char *paramValues[1];
int paramLengths[1];
int paramFormats[1];
conn = PQconnectdb(CONNINFO);
// -- (1) -- send a float value
float val_f = 0.12345678901234567890; // float precision: ~7 decimal digits
// alloc some memory & write float (in big endian) into
paramValues[0] = (char *) malloc(sizeof(val_f));
*((uint32_t*) paramValues[0]) = htobe32(*((uint32_t*) &val_f)); // host to big endian
paramLengths[0] = sizeof(val_f);
paramFormats[0] = 1; // binary
res = PQexecParams(conn, "SELECT $1::real ;", //
1, // number parameters …Run Code Online (Sandbox Code Playgroud) 我希望能够保持C#API与现在相同,但只是弃用方法调用中的一个参数.是否可以这样做,或者我是否需要在没有参数的情况下创建新方法并将原始方法标记为过时?
我找不到将匿名类型作为类型参数传递给泛型类的方法.
//这是我要实例化的类
public class ExtArrayStore<T> : IViewComponent
{
public IQueryable<T> Data { get; set; }
Run Code Online (Sandbox Code Playgroud)
... //创作者类
public static class ArrayStoreGenerator
{
public static ExtArrayStore<T> CreateInstance<T>(IQueryable<T> query)
{
return new ExtArrayStore<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
//试着用这个
IQueryable usersQuery= ((from k in bo.usersselect new { userid = k.userid, k.username}).AsQueryable());
var x = ArrayStoreGenerator.CreateInstance(usersQuery);
Run Code Online (Sandbox Code Playgroud)
我正进入(状态;
无法从用法推断出方法ArrayStoreGenerator.CreateInstance(System.Linq.IQueryable)'的类型参数.尝试显式指定类型参数
有没有办法实现这个目标?(我正在考虑接口和返回接口,但不确定它是否可行)任何人都可以帮助将anon类型传递给泛型.
我在我正在使用的其中一个应用程序中使用WPF Toolkit Datagrid.我想要的是将列宽和displayindex存储为用户首选项.我已经获得了list displayindex但是为了调整大小,我在datagrid上找不到任何事件,这会在列大小更改后触发.我已经尝试了"SizeChanged"事件,我猜这个事件只是在它最初计算大小时被触发,而且对于整个数据网格也是如此,而不是针对各个列.
任何替代解决方案或任何人都知道该事件?
是否有任何常见的函数(在apache commons或类似中)从类似查询参数的字符串制作映射?
具体到:
变体a(Querystring)
s="a=1&b=3"
=> Utils.mapFunction(s, '&', '=')
=> (Hash)Map { a:1; b:3 }
Run Code Online (Sandbox Code Playgroud)
变体b(Cachecontrol-Header)
s="max-age=3600;must-revalidate"
=> Utils.mapFunction(s, ';', '=')
=> (Hash)Map { max-age:3600; must-revalidate:true }
Run Code Online (Sandbox Code Playgroud)
我不想重新发明轮子.
谢谢
我有一个powershell脚本对一堆图像进行一些批处理,我想做一些并行处理.Powershell似乎有一些后台处理选项,如启动作业,等待作业等,但我找到的并行工作的唯一好资源是编写脚本文本并运行它们(PowerShell多线程)
理想情况下,我喜欢类似于.net 4中的并行foreach的东西.
有点像:
foreach-parallel -threads 4 ($file in (Get-ChildItem $dir))
{
.. Do Work
}
Run Code Online (Sandbox Code Playgroud)
也许我会更好的只是下降到c#...
c# ×3
c ×2
java ×2
.net ×1
asynchronous ×1
binding ×1
blocking ×1
c++ ×1
datagrid ×1
deprecated ×1
libpq ×1
locking ×1
map ×1
obsolete ×1
optimization ×1
parameters ×1
postgresql ×1
powershell ×1
string ×1
wpf ×1
wpftoolkit ×1