最近我们开始使用New Relic来监控我们在tomcat 7.0.6服务器上托管的生产webapp,但我们发现这个tomcat的内存占用量不断增加,并在一周内耗尽所有服务器(AWS高内存双超大型实例)记忆并变得反应迟钝,只有通过重新启动它才能找回它.我们在启动tomcat时提供Xms和Xmx参数,但在几小时内tomcat进程的内存使用量超过Xmx值并且它一直在增加,直到所有服务器内存都结束.这是进程命令:
/usr/java/jdk1.6.0_24//bin/java
-Djava.util.logging.config.file=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/conf/logging.properties
-Xms8192m
-Xmx8192m
-javaagent:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/newrelic/newrelic.jar
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Duser.timezone=Asia/Calcutta
-Djava.endorsed.dirs=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/endorsed
-classpath /xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/bootstrap.jar:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/tomcat-juli.jar
-Dcatalina.base=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6
-Dcatalina.home=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6
-Djava.io.tmpdir=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/temp org.apache.catalina.startup.Bootstrap start"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望这个过程不要使用超过8GB的内存,但在几小时内它会超过10GB,并且在几天之内它会超过20GB并且此服务器上的其他所有内容都会受到影响(我使用'top'来查看内存使用情况) .这怎么可能?
我必须创建一个模拟大约50-100个节点的Java程序.我想测试一些路由算法并分析网络性能.我尝试用线程模拟节点,但是当我使用更多线程时,我的CPU利用率就像任何东西一样上升.是否有一种在Java中模拟网络的方法.如果是这样的话?
我正在使用BufferedReader和InputStreamReader从流读入来创建一个从读者创建的长字符串.它最多可达100,000行,然后抛出500错误(服务器上的调用失败).我不确定是什么问题,有什么比这个方法更快?它的工作线路数千,但我正在使用大型数据集.
BufferedReader in = new BufferedReader(new InputStreamReader(newConnect.getInputStream()));
String inputLine;
String xmlObject = "";
StringBuffer str = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
str.append(inputLine);
str.toString();
}
in.close();
Run Code Online (Sandbox Code Playgroud)
提前致谢
在询问之前,请理解我的英语不好.
我Class.forName(...)在servlet编程中使用类.当我访问servlet时,我从Database获得一行详细的控制器信息,指出要使用哪个控制器.
这是Class.forName(...)我编码:
Class c = Class.forName(row.getControllerInfo);
c.newInstance();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但有一个问题,我正在使用Eclipse.问题是,当我修改Controller文件时,更改的内容未应用于服务器.
在JBoss数据源中,如何为我想要的数据库故障转移提供多个连接字符串.
将有两个具有相同表的Mysql数据库表示DB1和DB2.我想向DB1插入数据,如果DB1关闭,那么我需要将它插入DB2.在插入DB2期间,如果DB1出现,我需要将其余数据插入到DB1中.如何在JBoss中配置它?
我有一个抽象类,它提供了一些继承的EJB实体的一些常用功能.其中一个是时间戳列.
public abstract class AbstractEntity {
...
private long lastModified;
...
@Column
public long getLastModified() {
return lastModified;
}
public void setLastModified(long ts) {
lastModified = ts;
}
}
Run Code Online (Sandbox Code Playgroud)
和
@Table
@Entity
public class MyEntity extends AbstractEntity {
...
private Long key;
private String value;
...
@Id
public Long getKey() {
return key;
}
public void setKey(Long k) {
key = k;
}
@Column
public String getValue() {
return value;
}
public void setValue(String txt) {
value = txt;
setLastModified(System.currentTimeMillis()); …Run Code Online (Sandbox Code Playgroud) 我之前发过一个问题但是我不够清楚.我很抱歉这个混乱,但我的意思是,如果有一个程序,如:
TreeNode createMinBST(int arr[], int start, int end) {
if(end< start) return null;
int mid = (start+end)/2;
Treenode n= new Treenode(arr[mid]);
n.left= createMinBST(arr, start, mid-1) //LINE a
n.right= createMinBST(arr, mid+1, end); //LINE b
return n;
}
Run Code Online (Sandbox Code Playgroud)
LINE a和LINE b是如何展开的(就像在编码面试书中所说的那样)或它是如何工作的?LINE a一直到基本情况并返回值然后LINE b执行吗?或者两个递归语句同时归结为基本情况?
如果有人可以解释从上面给出的代码创建最小BST的级别明智路径,那么理解多个递归语句(这里是2-线a和线b)是如何发生的将是非常有帮助的.
非常感谢
我意识到可能有一些问题与这个类似的标题,但我认为我的问题有点不同,我试图做一些背景阅读,似乎无法在任何地方找到一个优雅的解决方案(虽然那可能是因为一个不存在)
基本上,我有三个盒子,每个盒子左边有一个图像,里面有一些文字,问题是让文本垂直对齐,做了一些关于vertical-align实际工作原理的背景阅读(我并不完全确定之前)我尝试实现它来解决问题,它在除了其中一个盒子之外的所有盒子上都能很好地工作,你会在下面的演示中看到我的意思:
最后一个方框有第二行文字,这条线最终位于图像下方,有几种方法可以让我想到这样做,但大多数方法都是使用浮动图像,最后一个文本的边距盒子,虽然工作不是一个特别好的方式(好吧,我想是的,无论如何......)
是否有一种优雅的方式,这样文本将保留在框的中间,无论我决定使用的行数/字体大小?
如果我必须使用我原来的解决方案,我很高兴这样做,我只是想知道是否有更好的方法来做到这一点,我还没有发现.
如果它的参数是,我如何反射性地得到构造函数Object ... objects.
我的构造函数:
public MyClass ( Object ... objects )
{
if ( ! ( objects == null ) )
{
if ( objects.length > 0 && objects [ 0 ] instanceof Long )
{
setLatency ( ( Long ) objects [ 0 ] ) ;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在怎么做到的:
Class< ? > clazz = Class.forName ( "MyClass" ) ;
Constructor< ? > clazzConstructor = clazz.getConstructor ( Object [ ].class ) ;
Run Code Online (Sandbox Code Playgroud)
我尝试做什么:
Long latency = 1000L …Run Code Online (Sandbox Code Playgroud)