小编Svr*_*Guy的帖子

Java -Xmx在大量ram上的奇怪行为

您可以使用-Xmx选项控制java中的最大堆大小.

我们正在使用此开关在Windows上遇到一些奇怪的行为.我们运行一些非常强大的服务器(想想196gb内存).Windows版本是Windows Server 2008R2

Java版本是1.6.0_18,64位(显然).

无论如何,我们遇到了一些奇怪的错误,其中进程因内存不足而退出,即使进程使用的内存少于-Xmx设置指定的内存.

所以我们编写了一个简单的程序,每次按下回车键就会分配一个1GB的字节数组,并将字节数组初始化为随机值(以防止任何内存压缩等).

基本上,最新的情况是,如果我们使用-Xmx35000m(大约35 gb)运行程序,当我们达到25 GB的进程空间(使用Windows任务管理器进行测量)时,我们会遇到内存不足的异常.我们在分配了24 GB的1 GB块(BTW)后点击这个,以便检出.

只需为-Xmx选项指定一个更大的值就可以使程序适用于更大量的ram.

那么发生了什么?是-Xmx只是"关闭".BTW:我们需要指定-Xmx55000m才能获得35 GB的进程空间......

关于发生了什么的任何想法?

他们是Windows JVM中的错误吗?

简单地将-Xmx选项设置得更大是否安全,即使-Xmx选项与进程明智之间存在脱节也是如此?

java windows

7
推荐指数
1
解决办法
3906
查看次数

在大型Java程序中查找错误输出到System.out

我们有一个很大的java代码库[~1 M行].

在代码库中埋藏(某处)是我们要删除的一些旧的System.out调试输出(它的混乱).

问题是:out代码库太大,我们无法轻易找到输出的来源.我们想要的是一种方法来查看调用System.out.println的位置(如异常或其他类似的堆栈跟踪).

它不适合调试 - 错误的输出来自某个错误的线程等.

有关如何跟踪此错误输出源的任何想法?

PS:对System.out的99.99%的调用是合法的,我们有成千上万的调用,所以只需在代码库中搜索System.out调用就不是解决办法!

java debugging console

3
推荐指数
1
解决办法
524
查看次数

标签 统计

java ×2

console ×1

debugging ×1

windows ×1