如果我故意创建了一个在遭受内存泄漏的情况下处理数据的应用程序,我会注意到报告的内存,例如:
Runtime.getRuntime().freeMemory()
Run Code Online (Sandbox Code Playgroud)
开始在1到2 MB的可用内存之间振荡.
然后应用程序进入如下循环:GC,处理一些数据,GC等,但由于GC经常发生,应用程序基本上不再做太多其他事情了.甚至GUI也需要年龄才能做出响应(而且,不,我不是在谈论EDT问题,它实际上是VM基本上停留在一些无休止的GC'模式).
我想知道:有没有办法以编程方式检测到JVM没有足够的内存?
请注意,我不是在谈论内存错误,也不是在检测内存泄漏本身.
我正在谈论检测到应用程序运行的内存如此之低,以至于它基本上都在调用GC,几乎没有时间做其他事情(在我的假设示例中:处理数据).
例如,它是否可以重复读取在一分钟内可用的内存量,并且看到如果数字在不同值之间"振荡",例如4 MB,则得出结论是存在一些泄漏并且该应用程序已无法使用?
这是一个非常严肃的问题:我在这里看到很多关于gravatars的线索,但是我找不到并回答这个问题:什么是计算机识别/认证(?)问题,如果有的话,是gravatars应该解决的?
维基百科条目和官方网站都不是非常有用.官方网站提到了"全球独一无二"的图片.在什么意义上独特?据我所知,它只是唯一的哈希:两个人可以有两张看起来非常相似的图片,如果不相同的话.
请注意,这个问题不是关于gravatars无可争议地导致哪些问题(比如泄漏10%的stackoverflow.com帐户电子邮件地址,如此处讨论的:"gravatars可以泄漏电子邮件地址")但是关于哪些身份验证(?)问题,如果有的话,是gravatars应该解决?
目标只是拥有一个很酷/有趣/可爱的图标,并通过将其存储在远程网站上来保存带宽,或者还有更多功能,就像提供真正的身份验证目的一样,我会完全失踪?
请注意,我没有反对他们并发现它们相当酷,但我只是很难弄清楚他们的目的是什么,以及我是否应该关注他们在我开发的webapps中.
我已经工作了很长时间,.hgignore文件很好,最近添加了一种新类型的文件可以忽略.运行"hg status"时,我注意到了这一点:
M .hgignore
Run Code Online (Sandbox Code Playgroud)
所以Mercurial认为这.hgignore是一个需要跟踪的文件(如果它是项目的根).
现在我已经阅读了各种文档,但我的观点没有特别说明,所以这里有一些非常详细的问题,希望可以帮助我解决这个问题(如果有人回答可以引用并解决这三点,那就太棒了!每个问题是/否答案]):
应该.hgignore是项目的根源?(我想它应该,看到开发人员可能正在开发几个项目,这些项目都有不同的.hgignore要求)
可以.hgignoreBE水银被忽略?
如果它可以忽略,应该 .hgignore被Mercurial忽略(这与前一个问题不同)
在不.hgignore应该被忽略的情况下,如果你使用了一个非常古老和不完整的东西,你会突然回滚的方式不会发生一些非常糟糕的事情吗?.hgignore
我认为我发现某些每用户IDE项目文件发生了奇怪的事情(我并不是说所有的IDE项目文件只是每个用户,但有些肯定是)应该被忽略,但是用户回滚到一个旧版本,旧版本.hgignore被使用,然后突然被忽略的文件被提交,因为旧版本.hgignore没有排除这些.
我有以下伪C/Java/C#代码:
int a[]= { 30, 20 };
int b[] = { 40, 50 };
int c[] = {12, 12};
Run Code Online (Sandbox Code Playgroud)
如何计算跨产品ABxAC?
我写了一个小的Bash脚本来查找包含在参数中传递的字符串的所有Mercurial变更集(从小费开始):
#!/bin/bash
CNT=$(hg tip | awk '{ print $2 }' | head -c 3)
while [ $CNT -gt 0 ]
do
echo rev $CNT
hg log -v -r$CNT | grep $1
let CNT=CNT-1
done
Run Code Online (Sandbox Code Playgroud)
如果我通过按ctrl-c来中断它,那么当前执行的命令通常是"hg log"并且它是被中断的命令,但随后我的脚本继续.
我当时正在考虑检查"hg log"的返回状态,但因为我将它管道化为grep我不太确定如何去做...
在中断时如何退出此脚本?(顺便说一下,我不知道那个剧本是否对我想要做的事情都很好但是它完成了工作,无论如何我对"中断"的问题感兴趣)
我应该如何从.jsp访问ServletContext?例如,如何从.jsp内部调用getRealPath方法.
这是一个Servlet,工作正常:
protected void doGet(
HttpServletRequest req,
HttpServletResponse resp
) throws ServletException, IOException {
resp.setContentType( "text/html; charset=UTF-8" );
final PrintWriter pw = resp.getWriter();
pw.print( "<html><body>" );
pw.print( getServletContext().getRealPath( "text/en" ) );
pw.print( "</body></html>" );
pw.flush();
pw.close();
}
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找我应该在下面的.jsp中插入的确切行,以完成与上面的servlet完全相同的操作.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
... // What should I insert here
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 当你在另一个.jsp中包含的.jsp中重复标题时会发生什么?
例如,如果example.jsp以此开头:
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
<div class="content">
<jsp:include page="support.jsp"/>
...
Run Code Online (Sandbox Code Playgroud)
(它包括support.jsp)
然后support.jsp 也开始这样:
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
...
Run Code Online (Sandbox Code Playgroud)
那是问题吗?这是不好的做法吗?
当你重复几次只对应于生成的.html页面中的一个标题的标题时,具体会发生什么?
可能重复:
需要有关Apple OS X的替代JVM的指导
就是这样,Apple可能不再自己生产JVM,也不再将其与OS X一起发售:
http://www.infoq.com/news/2010/10/apple-deprecates-java
我们在Windows,Linux和OS X上运行了一个巨大的Java应用程序(OS X是我们[丰富]用户群的重要组成部分),作为开发人员,我们的选择是什么?
在另一个OS X JVM(一个Oracle JVM)上运行我们的应用程序是否现实?
或者是要远离Java考虑?如果是这样,那在技术上意味着什么?尝试使用一些自动移植工具(与Excelsior Jet for Windows不同,OS X有类似的东西吗?)?将整个应用程序(这将是巨大的)重写为Objective-C并维护两个不同的版本?(一个Java和一个Objective-C?).
我们可能决定完全放弃OS X支持,至少只要Microsoft或Oracle不杀死Windows上的Java.
使用setRGB和getRGB方法处理BufferedImage时,我注意到两件事:
的setRGB和的getRGB方法可在某些系统(多达大小比modifiyng中的int []数组慢两个数量级)慢得令人难以置信.
有没有保证一个的getRGB遵循setRGB会给你回传给相同的像素
最后一点从setRGB的JavaDoc基本上非常清楚,它指出:
...对于具有IndexColorModel的图像,选择具有最近颜色的索引.
看到我可以直接在BufferedImage的int []像素中工作,我可以通过这样做来访问,例如:
int[] a = ((DataBufferInt) tmp.getRaster().getDataBuffer()).getData();
Run Code Online (Sandbox Code Playgroud)
我想知道:当直接操纵像素时,是否有任何已知的缺点/陷阱int[]?
大家都知道Java中的同步上下文
我需要问一下; 当我写作
Dimension d = new Dimension();
synchronized(d){
// critical atomic operation
}
Run Code Online (Sandbox Code Playgroud)
实际上,给定对象的同步等于实例上的同步.
因此,当我编写synchronized(d),其中d是对象的实例时,线程将获得所有同步实例代码块的锁定.
你能否告诉我有关同步环境的更多细节.
您的回复将不胜感激.