Java的堆外内存,可以用以下哪个参数设置最大值 A. -XX:MaxDirectMemorySize B. -Xmx C. -XX:MaxPermSize D. –Xss
时间: 2024-04-28 12:26:39 浏览: 15
选项 A. -XX:MaxDirectMemorySize 可以用于设置 Java 的堆外内存的最大值。
堆外内存是指在 Java 虚拟机之外分配的内存,即使用 NIO(New IO)库时使用的 DirectByteBuffer 所分配的内存,它不受 Java 堆大小的限制。通过设置 -XX:MaxDirectMemorySize 参数,可以限制堆外内存的最大使用量。当应用程序试图分配堆外内存时,如果已经达到了设置的最大值,就会抛出 OutOfMemoryError 异常。
选项 -Xmx 是用于设置 Java 堆的最大大小,选项 -XX:MaxPermSize 是用于设置永久代的最大大小,选项 -Xss 是用于设置每个线程的堆栈大小。它们都与堆外内存的设置无关。
相关问题
jvm -Xms -Xmx -XX:PermSize -XX:MaxPermSize 设置比例
JVM 中的 -Xms 和 -Xmx 分别用于设置 JVM 的初始堆大小和最大堆大小。而 -XX:PermSize 和 -XX:MaxPermSize 则用于设置永久代(Permanent Generation)的初始大小和最大大小。
这些参数的设置比例应该根据具体的应用场景和服务器硬件配置来进行调整。一般来说,初始堆大小和最大堆大小应该设置为相同的值,以避免 JVM 运行时动态扩容带来的性能损失。而永久代的大小则可以根据应用程序中类和方法的数量来进行调整。
例如,如果应用程序中类和方法数量较多,可以适当增大永久代的大小,以避免出现 PermGen Space 的异常。一般来说,永久代的大小应该占用堆大小的 20% 左右。因此,可以根据实际情况设置如下参数:
-Xms4g -Xmx4g -XX:PermSize=512m -XX:MaxPermSize=512m
这个设置表示 JVM 的初始堆大小和最大堆大小都为 4GB,而永久代的初始大小和最大大小都为 512MB。这个比例适用于一般的服务器硬件配置和中等规模的 Java 应用程序。但是需要注意,这个比例并不适用于所有的应用场景,需要根据具体情况进行调整。
/usr/java/jdk1.8.0_161/bin/java -server -Xms2g -Xmx2g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking -Drocketmq.client.logUseSlf4j=true -cp .:/usr/local/rocketmq/bin/../conf:/usr/local/rocketmq/bin/../lib/*: -Drmq.logback.configurationFile=/usr/local/rocketmq/conf/rmq.broker.logback.xml org.apache.rocketmq.broker.BrokerStartup -c ../conf/broker.conf
这是一个使用Java语言编写的应用程序的命令行运行指令。该程序是一个消息队列中间件的Broker,使用了RocketMQ框架实现。其中的参数含义如下:
-server:使用JVM的server模式。在多核CPU上提高性能。
-Xms2g:JVM启动时堆内存的最小值为2G。
-Xmx2g:JVM堆内存的最大值为2G。
-XX:+UseG1GC:使用G1垃圾回收器。
-XX:G1HeapRegionSize=16m:G1垃圾回收器内存区域的大小为16M。
-XX:G1ReservePercent=25:预留25%的空间以避免太满引发的性能问题。
-XX:InitiatingHeapOccupancyPercent=30:G1在堆内存使用达到30%时会触发垃圾回收。
-XX:SoftRefLRUPolicyMSPerMB=0:清除软引用的时间间隔为0,即软引用的对象一旦没有被使用就会被立即清除。
-verbose:gc:打印GC日志。
-Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log:将GC日志输出到/dev/shm/rmq_srv_gc_%p_%t.log文件中。
-XX:+PrintGCDetails:打印GC详细信息。
-XX:+PrintGCDateStamps:打印GC时间戳。
-XX:+PrintGCApplicationStoppedTime:打印应用程序停止时间。
-XX:+PrintAdaptiveSizePolicy:打印自适应策略的信息。
-XX:+UseGCLogFileRotation:启用GC日志文件轮换。
-XX:NumberOfGCLogFiles=5:GC日志文件轮换时保留的文件数目。
-XX:GCLogFileSize=30m:GC日志文件的大小为30M。
-XX:-OmitStackTraceInFastThrow:关闭快速抛出异常时的栈信息。
-XX:+AlwaysPreTouch:在JVM启动时预先分配堆内存。
-XX:MaxDirectMemorySize=15g:最大直接内存大小为15G。
-XX:-UseLargePages:不使用大页面。
-XX:-UseBiasedLocking:不使用偏向锁。
-Drocketmq.client.logUseSlf4j=true:使用SLF4J作为日志框架。
-c ../conf/broker.conf:指定Broker的配置文件路径。