Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jvm6如何在不需要时减少堆大小_Java_Garbage Collection_Jvm_Java 6 - Fatal编程技术网

Java Jvm6如何在不需要时减少堆大小

Java Jvm6如何在不需要时减少堆大小,java,garbage-collection,jvm,java-6,Java,Garbage Collection,Jvm,Java 6,我正在监视运行在jvm6上的Java应用程序。 这里是jvisualVM面板的屏幕截图 我注意到,当堆大小很小时(图中12:39之前),垃圾收集器会频繁运行。 然后我运行一个内存昂贵的任务几次(从12:39到12:41),堆空间就会增加。为什么从那时起,垃圾收集器运行的频率会降低 一小时或更长时间后,如果我避免在应用程序上执行昂贵的任务,堆空间会慢慢减少。 为什么使用的堆空间需要如此长的时间才能减少 我能做些什么来避免这种行为吗? 新的Java8虚拟机有不同的行为吗?这种行为看起来很正常 直到1

我正在监视运行在
jvm6
上的Java应用程序。 这里是jvisualVM面板的屏幕截图

我注意到,当堆大小很小时(图中12:39之前),垃圾收集器会频繁运行。 然后我运行一个内存昂贵的任务几次(从12:39到12:41),堆空间就会增加。为什么从那时起,垃圾收集器运行的频率会降低

一小时或更长时间后,如果我避免在应用程序上执行昂贵的任务,堆空间会慢慢减少。 为什么使用的堆空间需要如此长的时间才能减少

我能做些什么来避免这种行为吗?
新的Java8虚拟机有不同的行为吗?

这种行为看起来很正常

直到12点39分,在您附加的配置文件快照上,没有太多GC正在进行

然后运行任务,当不再可访问的对象符合GC条件时,扫描会标记它们并将其删除

您不必担心堆的大小,除非由于某些内存泄漏而经常出现最大化和崩溃。GC将负责从堆中删除符合条件的对象,并且您在如何影响GC方面受到限制(当然,除非您切换GC实现)

该平台的每个主要版本都包括一些JVM和GC更改/改进,但在Hotspot 7/8中,应用程序的行为将非常相似。试试看


现代JVM具有高度优化的垃圾收集器,您不必担心它如何/何时回收内存,而更需要确保您释放对象,使它们符合收集条件。启动后,您多长时间会遇到内存不足问题

如果由于内存不足而导致崩溃,请将JVM配置为在退出时进行堆转储:
-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=date.hprof行为看起来正常

直到12点39分,在您附加的配置文件快照上,没有太多GC正在进行

然后运行任务,当不再可访问的对象符合GC条件时,扫描会标记它们并将其删除

您不必担心堆的大小,除非由于某些内存泄漏而经常出现最大化和崩溃。GC将负责从堆中删除符合条件的对象,并且您在如何影响GC方面受到限制(当然,除非您切换GC实现)

该平台的每个主要版本都包括一些JVM和GC更改/改进,但在Hotspot 7/8中,应用程序的行为将非常相似。试试看


现代JVM具有高度优化的垃圾收集器,您不必担心它如何/何时回收内存,而更需要确保您释放对象,使它们符合收集条件。启动后,您多长时间会遇到内存不足问题

如果由于内存不足而导致崩溃,请将JVM配置为在退出时进行堆转储:
-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=date.hprof行为看起来正常

直到12点39分,在您附加的配置文件快照上,没有太多GC正在进行

然后运行任务,当不再可访问的对象符合GC条件时,扫描会标记它们并将其删除

您不必担心堆的大小,除非由于某些内存泄漏而经常出现最大化和崩溃。GC将负责从堆中删除符合条件的对象,并且您在如何影响GC方面受到限制(当然,除非您切换GC实现)

该平台的每个主要版本都包括一些JVM和GC更改/改进,但在Hotspot 7/8中,应用程序的行为将非常相似。试试看


现代JVM具有高度优化的垃圾收集器,您不必担心它如何/何时回收内存,而更需要确保您释放对象,使它们符合收集条件。启动后,您多长时间会遇到内存不足问题

如果由于内存不足而导致崩溃,请将JVM配置为在退出时进行堆转储:
-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=date.hprof行为看起来正常

直到12点39分,在您附加的配置文件快照上,没有太多GC正在进行

然后运行任务,当不再可访问的对象符合GC条件时,扫描会标记它们并将其删除

您不必担心堆的大小,除非由于某些内存泄漏而经常出现最大化和崩溃。GC将负责从堆中删除符合条件的对象,并且您在如何影响GC方面受到限制(当然,除非您切换GC实现)

该平台的每个主要版本都包括一些JVM和GC更改/改进,但在Hotspot 7/8中,应用程序的行为将非常相似。试试看


现代JVM具有高度优化的垃圾收集器,您不必担心它如何/何时回收内存,而更需要确保您释放对象,使它们符合收集条件。启动后,您多长时间会遇到内存不足问题

如果由于内存不足而导致崩溃,请将JVM配置为在退出时进行堆转储: -XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=date.hprof

我能做些什么来避免这种行为吗

设置
-XX:MaxHeapFreeRatio=30-XX:MinHeapFreeRatio=15
,这将更积极地收缩堆大小。请注意,并非所有GC实现都将不使用的内存返回操作系统。至少G1是这样,但在Java6上不可用

我能做些什么来避免这种行为吗

设置
-XX:M