Tag:

无法将Java堆大小设置为大于1568

我正在运行具有以下属性的服务器: Windows Server 2008 R2标准版 – 64位4GB RAM 我正在尝试将应用程序的堆大小设置为3gb。 我正在使用标志-Xmx3G -Xms3G。 使用标志运行会导致以下错误: 初始化VM时发生错误无法为对象堆保留足够的空间无法创建Java虚拟机。 我一直在玩设置,看看我的天花板是什么,发现1568是我的天花板。 我错过了什么?

如何在java中获得比较器的反转

在一个方法中,我收到一个通用object E extends Comparable作为参数。 现在我想创建两个优先级队列。其中一个使用E使用的comparator和其他使用E使用的comparator相反的队列(即如果E使用’ =’)。 请告诉我如何创建两个这样的队列。 queue2=new PriorityQueue(0,Collections.reverseOrder(e)); 我收到reverseOrder不适用的错误。 请帮忙

除了jmap之外还有一个命令行方法来获取jvm堆转储吗?

我们在linux中使用oracle jvm 1.8 64bit。 我们知道jmap可以获得jvm堆转储: jmap -F -dump:format=b,file=***filepath*** ***pid*** 但它很慢。 我们知道使用JVisualVM和连接到JMX的JConsole也可以获得堆转储,而且速度非常快。 但它们与GUI有关。 但是,在我们的产品环境中,没有GUI。 没有带GUI的机器可以访问该环境。 所以我们的问题是 – JVisualVM和JConsole是否支持命令行来进行堆转储? 或者除了jmap之外还有一个命令行方法来获取jvm堆转储吗? 我们今天试过 – 1,使用jvisualvm(远程jmx),我们可以成功获得堆转储 2,使用不带-F选项的jmap,转储失败: [root @panda01~] #jmap -dump:format = b,file = / tmp / heapdump.31941.hprof 31941 31941:无法打开套接字文件:目标进程未响应或未加载HotSpot VM 当目标进程没有响应时,可以使用-F选项 3,使用带有-F选项的jmap,转储成功,但速度慢: [root @panda01~] #jmap -F -dump:format = b,file = / tmp / heapdump.31941.hprof 31941 正在处理ID 31941,请等待…… 调试器连接成功。 服务器编译检测到 […]

如何增加交换大小可以增加堆大小?

我有ubuntu服务器,我有8 GB的RAM。 当我尝试将堆大小设置为8GB时,我的Web服务器(weblogic)无法启动。 但是,如果我将交换大小增加到大小为11 GB,网络服务器就开始了。 所以我的问题是如何在增加交换大小后,如何为我的Web服务器分配8GB堆大小(当我有8 GB RAM,其中OS需要1到2 GB)?

如何查找哪些对象创建的垃圾最多

我有一个应用程序,包含80个不同类的大约80个实例。 由于我的应用程序是实时的,因此这些类的某些子集生成的垃圾量是不可接受的并且停止世界暂停太长时间。 我想要找到的是哪些类负责在堆上创建最大数量的对象(不是聚合大小,而是原始对象数),因为这是导致世界暂停停留这么长时间的原因。 我怎么发现这个? 如果需要JVisualVM,我就有这个。

Java – 在线上初始化字符串数组内存分配?

String[] stringArray = new String[] { “abc”, “xyz” }; 执行此行有两个字符串文字在PERMGEN空间中创建“abc”和“xyz”。 由于初始化有一个新的运算符,我不确定是否在HEAP上分配了任何内存。 多谢你们。

IBM J9VM的默认堆大小是多少?

我安装了IBM的J9 VM(build 2.3,J2RE 1.5.0 IBM J9 2.3)。 获得OOM后,堆转储的大小为383MB。 JVM有多少堆? 我问的原因是400MB堆转储似乎对我预期的默认64MB堆有点多,但我没有指定任何-Xm选项。 J9是否使用不同的默认堆大小? 如果是这样,我怎么知道它是什么?

如何在运行时监视某些java方法分配的内存

我正在创建一个java程序,我的类假设A有一些预定义的行为。 但是用户可以覆盖我的class级以改变其行为。 因此,我的脚本将检查是否存在某些子类,而不是我将其称为行为,但如果他在代码中编写了一些阻塞代码或内存泄漏,该怎么办呢。 这可能会损害我的流程。 在java中是否有任何方法来监视某些方法分配的内存。 请建议。

使用ConcMarkSweepGC的连续CMS集合

在Linux上使用以下JVM选项启动Tomcat(2cpu,4g RAM,800M ehcache元素): -Xmn512m -Xmx2g -Xms2g -XX:+UseConcMarkSweepGC -Xss128k -XX:PermSize=64m -XX:MaxPermSize=128m -XX:+DisableExplicitGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails 运行流量低,没有数据库问题,没有批处理过程在凌晨(06:00)20分钟之前, 堆内存达到-Xmx值并且CMS反复运行 ,最终返回到正常的GC行为,此时消息Unloading class sun.reflect.GeneratedMethodAccessorXXXXX已打印到日志中。 请你能: 建议一些GC调整点? 要么 建议可能的原因? GC日志: 2011-06-30T06:15:03.494+0900: 145634.229: [GC 145634.230: [ParNew: 463698K->37791K(471872K), 0.0342030 secs] 1848117K->1434326K(2044736K), 0.0343190 secs] [Times: user=0.13 sys=0.01, real=0.03 secs] 2011-06-30T06:15:12.423+0900: 145643.159: [GC 145643.159: [ParNew: 457247K->36210K(471872K), 0.0302130 secs] 1853782K->1443540K(2044736K), 0.0303470 secs] [Times: user=0.12 sys=0.00, real=0.03 secs] […]

Java堆的标准分配比率

我试图寻找这个问题的答案,但从来没有找到任何答案。 在定义最大堆大小时,为Java GC空间分配大小的标准比率是多少? 那就是:如果我用堆栈的4Gb启动我的JVM,那么分配给Eden的数量是多少? 幸存者多少钱? 天赋多少钱? 此外,不同VM供应商的比率是否会发生变化? 提前致谢