12G内存,生成100w的数据测试一个东西,发现内存占用上升到10G后就不上升了,而且console里显示的数据生成速度明显变慢了,CPU占用率还是100%。这是什么原因,为什么还有2G空闲内存占用率却不上升了,是因为触发了GC吗?不懂,请指教!
12G内存,生成100w的数据测试一个东西,发现内存占用上升到10G后就不上升了,而且console里显示的数据生成速度明显变慢了,CPU占用率还是100%。这是什么原因,为什么还有2G空闲内存占用率却不上升了,是因为触发了GC吗?不懂,请指教!
查看Java相关进程
➜ ~ jps
23008 Launcher
26130 Jps
19449 Launcher
14539
19228 GeneratorApplication
12909
查询相关信息
➜ ~ jinfo 19228
VM Flags:
-XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CICompilerCount=4 -XX:InitialHeapSize=268435456 -XX:+ManagementServer -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:TieredStopAtLevel=1 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
即可查询到堆内存限制信息。
一般启动Java项目时,会设置Xmx Xms
来指定堆内存大小。一般会小于机器最大内存。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
JVM 是有限制的初始时候默认是物理内存的最小1/64, 默认最大是1/4, 不过可以自己设置, 操作系统与JVM也不允许将内存占满
-Xms64M
-Xmx128M
可以在这里面修改: