我想远程调试在Tomcat 7中运行的应用程序.Tomcat作为Win2008服务器上的服务运行.我将以下内容添加到Tomcat的Java配置面板中的Java选项中:
-Xdebug -Xrunjdwp:transport=dt_socket,address=4711,server=y,suspend=n并在我的工作站和此端口的服务器上打开防火墙.但是当我在工作站上尝试从IntelliJ 9进行调试时,我收到一条错误消息Unable to open debugger port : java.net.ConnectException "Connection timed out: connect".jvm是备用的Sun/Oracle 64位JVM版本1.6.0_27.
我通过访问ManagementFactory.getRuntimeMXBean().getInputArguments()部署到Tomcat的应用程序并将结果记录到日志文件来验证命令行参数正在使用中.我通过Wireshark在我的工作站和服务器上验证了端口4711上的TCP请求是从我的电脑发送到达服务器的,但是没有答案.netstat -a在服务器上运行不会显示侦听此端口的进程.所以我假设Tomcat/JVM不会启动远程调试.
我有以下代码:
public class Main {
public static void main(String[] args) {
Generic generic = new Generic<Integer>(5);
List<String> stringList = generic.getStringList(); // this line is where the compiler complains
}
}
public class Generic<T> {
private T member;
public Generic(T member) {
this.member = member;
}
public T getMember() {
return member;
}
public List<String> getStringList() {
return new ArrayList<String>();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,类Generic使用泛型类型参数声明,但generic方法中的变量main属于擦除类型,即没有类型参数.我不明白的是为什么编译器抱怨分配的行List<String>:
Warning:(6, 56) java: unchecked conversion
required: java.util.List<java.lang.String>
found: java.util.List
Run Code Online (Sandbox Code Playgroud)
该方法明确返回a …
我正在优化长时间运行的T-SQL查询.不知何故,我记得SQL Server中有一个功能,它允许检查索引存在时计划的方式.有点像CREATE VIRTUAL INDEX然后检查计划.但我没有找到如何实现这一目标.
SQL Server 2008R2中是否有这样的功能?
在我们的Tomcat应用程序中,我们得到"OutOfMemoryError:超出GC开销限制".但Runtime.getRuntime().freeMemory()报告576 MB是免费的.
怎么会发生这种情况?
从SQL Server JDBC驱动程序中抛出错误,我无法想象这将尝试在一个内存请求中分配数百兆字节.GarbageCollectorMXBean在错误被抛出之前的几分钟内,"PS Scavenge"以及"PS MarkSweep" 的s计数没有增加太多.
Runtime.getRuntime().maxMemory()以及Runtime.getRuntime().totalMemory()报告4.5 GB.这与64位Sun JVM for Java 7一起运行.