我们的一个项目有时会得到一个 OutOfMemory在一个用户的计算机上出错,但当然不是在我测试它时.我只是用JProfiler运行它(在10天的评估许可证上,因为我之前从未使用它),并且对我们的代码前缀进行过滤,总大小和实例数量中最大的块是特定简单类的8000多个实例.
我点击了JProfiler上的"Garbage Collect"按钮,我们其他类的大部分实例都消失了,但不是这些特殊的.我再次运行测试,仍然在同一个实例中,它创建了4000多个类的实例,但是当我点击"垃圾收集"时,那些离开了8000多个原始实例.
这些实例在各个阶段都会遇到各种集合.我认为它们不是垃圾收集的事实必然意味着某些东西持有对其中一个集合的引用,以便保持对对象的引用.
有什么建议我如何弄清楚什么是持有参考?我正在寻找在代码中寻找什么的建议,以及如果有的话在JProfiler中找到它的方法.
我有一个已安排的Quartz作业.我想更新与之关联的JobDataMap.如果我得到一个JobDataMap JobDataMap jobDataMap = scheduler.getJobDetail(....).getJobDataMap(),该地图是"实时"吗?即.如果我改变它,它会被保存在调度程序中吗?如果没有,我该如何坚持下去?
为什么这段代码有效:
$('div.error_container').html('<div class="error">No more foo allowed</div>');
Run Code Online (Sandbox Code Playgroud)
但是这段代码会导致错误:
$('div.error_container').html('<div class="error">No more foo allowed<br /></div>');
Run Code Online (Sandbox Code Playgroud)
我已经尝试过将标签放在<br />前后</div>,同样的错误.我试着从改变它<br />来<br>.Chrome始终在检查器中说明以下内容:
Uncaught SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud) 我发誓这曾经工作,但它不是在这种情况下.我正在尝试匹配col1,col2和col3,即使其中一个或多个为null.我知道在某些语言中我不得不求助于像((? is null AND col1 is null) OR col1 = ?).这需要吗?
PreparedStatement selStmt = getConn().prepareStatement(
"SELECT * " +
"FROM tbl1 " +
"WHERE col1 = ? AND col2 = ? and col3 = ?");
try
{
int col = 1;
setInt(selStmt, col++, col1);
setInt(selStmt, col++, col2);
setInt(selStmt, col++, col3);
ResultSet rs = selStmt.executeQuery();
try
{
while (rs.next())
{
// process row
}
}
finally
{
rs.close();
}
}
finally
{
selStmt.close();
}
// Does the equivalient of …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了Java 1.6_07,所以我可以尝试使用VisualVM进行分析.它告诉我,我的应用程序花费了60%的时间sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
我怎么知道那段时间里做了什么?它有多少时间等待某种东西来称呼它,或做其他事情?什么叫它,它叫什么?我似乎无法找到任何方法深入到更深层次,就像Quantify或Perl剖析器一样.
在我正在研究的多线程应用程序中,我们偶尔会看到ConcurrentModificationExceptions我们的列表(大多数情况下ArrayList,有时候是矢量).但是还有一些时候我认为并发修改正在发生,因为遍历集合似乎缺少项目,但没有抛出异常.我知道文档ConcurrentModificationException说你不能依赖它,但我怎样才能确保我不会同时修改List?并且在同步块中包装对集合的每个访问权限是防止它的唯一方法吗?
更新:是的,我知道Collections.synchronizedCollection,但它并没有防止有人在你迭代它时修改集合.我认为至少有一些问题发生在我正在迭代它时有人向集合添加内容时.
第二次更新 如果有人想结合提到的synchronizedCollection和像Jason那样的克隆,提到java.util.concurrent和像jacekfoo和Javamann这样的apache集合框架,我可以接受一个答案.
我已经用Swing和JDBC做了10年的"普通的旧java对象"编程,我认为自己很擅长.但是我在两周内开始了一项他们使用JBoss的新工作,我想在开始之前先了解并开始学习所有这些东西.什么是好资源?在线教程,书籍,电子书,您可以建议的任何内容,尤其是那些不会首先教您普通Java基础知识的内容.
我正在尝试解析一个大型XML文件.我使用XML :: SAX(使用Expat,而不是perl实现)读取它,并将所有第二级及以下节点放入我的"Node"类:
package Node;
use Moose;
has "name" =>
(
isa => "Str",
reader => 'getName'
);
has "text" =>
(
is => "rw",
isa => "Str"
);
has "attrs" =>
(
is => "rw",
isa => "HashRef[Str]"
);
has "subNodes" =>
(
is => "rw",
isa => "ArrayRef[Node]",
default => sub { [] }
);
sub subNode
{
my ($self, $name) = @_;
my $subNodeRef = $self->subNodes;
my @matchingSubnodes = grep { $_->getName eq $name } @$subNodeRef;
if …Run Code Online (Sandbox Code Playgroud) 我想在开源许可下发布我的软件,条件如下:
你被允许:
你不被允许:
有没有符合我需求的软件许可证?
如果我用来wget从geonames.org服务器检索某些内容,它会报告两个IP地址,第一个会失败但是从第二个获取它:
Resolving ws.geonames.org (ws.geonames.org)... 5.9.41.208, 176.9.107.169
Connecting to ws.geonames.org (ws.geonames.org)|5.9.41.208|:80... failed: Connection refused.
Connecting to ws.geonames.org (ws.geonames.org)|176.9.107.169|:80... connected.
HTTP request sent, awaiting response... 200 OK
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我必须使用LWP :: UserAgent和HTTP :: Request通过perl访问它.如果第一个IP失败,如何让他们尝试第二个IP?
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(
GET =>
"http://ws.geonames.org/countrySubdivision?lat=$lat&lng=$long&radius=$radius&username=xyzzy");
my $res = $ua->request($req);
Run Code Online (Sandbox Code Playgroud)