插一根16G的内存条,和插两根8G的到底有区别吗?

序言

  随着时间的推移,时至今日,新一代Z170、B150主板平台价格已经较为平稳,且较亲民,已经逐渐取代了上一代的Z97与B85主板平台,随之而来的自然也有内存条的新老换岗。

  新一代DDR4内存条功耗更低、发热更小、容量更大,而且现在在价格已经趋于平稳,显然DDR4内存的性价比更高。单条16GB内存条的价格是要低于2*8GB内存条的,那么想必更换平台,更换内存条的广大发烧友心中都会有这样的犹豫,究竟是选择双8GB组建双通道的16GB(之后简称为双通道16GB),还是选择直接单条16GB就够用了呢?笔者将在此用客观事实为您答疑解惑。

  

  测试平台介绍与测试方法说明

  为了能够客观公正的完成此次测试,为了尽可能的保证测试结果的准确,排除其它因素的影响,本次测试只有内存条的更换,其他软硬件采用完全相同的配置。且笔者选用了同品牌同型号同容量的单、双通道不同内存条。

  

  6代的酷睿i系列的cpu—core i7-6700,14nm工艺新架构(Skylake),四核心八线程,频率达到4.0-4.2GHz。

  

  本次测试硬件全家福。

  

  

  单16G,还是双8G?

  

  测试平台配置一览

  本次测试使用的显卡性能较差,游戏中仅开启部分特效,且每个游戏并没有采用相同的画面设置,部分测试软件和游戏的帧数可能较低,不过这并不影响对比,我们保持所有的配置与游戏设置不变,尽可能的突出单通道16GB与双通道16GB的对比结果。

  

  单通道16GB VS双通道16GB,鹿死谁手?

  

  CPU-Z检测下的双通道16G内存

  

  单通道16G容量内存

  这里内存均使用2400MHz的频率,使得单双通道以外的因素尽可能的保持一致。

  基础频率测试

  AIDA64内存带宽、延迟测试。AIDA64是一款测试软硬件系统信息的工具,它可以详细的显示出PC的每一个方面的信息,且可以对系统内存的性能进行全面评估。

  

  双通道16GB测试成绩

  

  单通道16GB测试成绩

  以上是AIDA64自带内存测试工具的测试情况,我们从测试数据上可以看出双通道16GB的读取,写入,复制分别为33.9GB/s、35.7GB/s、32.5GB/s,延迟为67.0ns(延迟越低越好)。

  单通道16GB的读取,写入,复制分别为18.6GB/s、17.9GB/s、18.7GB/s,延迟为60.4ns。

  双通道16GB的读取、写入和拷贝带宽均大幅高于单通道16GB,非常明显。

  

  双通道16GB测试结果

  

  单通道16GB测试结果

  在测试中,双通道16GB内存的总体内存性能为26.13GB/s;而单通道16GB内存的总体内存性能为14GB/s。总体内存性能差异很大,此项测试双通道16GB完爆单通道16GB。

  通过基础频率测试看出单通道16GB与双通道16GB内存条在性能参数,读取、写入、拷贝、复制,延迟及总体内存性能方面,还是存在着很大差距的。

  应用程序测试

  本项测试笔者采用Winrar压缩工具测试。WinRAR是非常好的压缩工具,使用方便,压缩率和速度都很不错。

  

  双通道16GB的测试结果

  

  单通道16GB的测试结果

  这里需要提到一下单通道16GB的当前速度为7779KB/秒,是由于测试阶段的最后零点几秒出现了一点变动,不影响整体结果,我们以已处理的速度为准。

  如测试所见双通道16GB的已处理速度为9848 KB/秒,在1分钟的时间内处理了580MB;单通道16GB的已处理速度为8996KB/秒,在1分钟的时间内处理了532MB。在单位时间里双通道16GB依然占有优势。

  在应用程序测试中在解压缩文件方面双通道16GB的处理速度要比单通道16GB快接近1M/S,还是有很大优势的,但是并不是无法忽视。

  3D MARK测试

  现今的3D MARK已不仅仅是一款衡量显卡性能的软件,其已渐渐转变成了一款衡量整机性能的软件。

  

  双通道16GB的测试成绩

  

  单通道16GB的测试成绩

  2364的总分对比2330的总分,双通道16GB对整机性能还是有所提升,就这个测试结果来说,单双通道的更换对显卡以及实际游戏体验方面影响并不明显。

  PC MARK8 Creative测试

  笔者采用的是PC MARK8 Creative测试,这项测试是PC MARK8所有分项测试中对电脑的负载最高的一项,Creative的测试中包含了“网页浏览、照片编辑、海量照片编辑、视频编辑、媒体运行、高端游戏和视频会议”这七项不同的子测试项。通过这个高负载的测试环境来得到更准确的测试数据。

  

  双通道16GB的测试成绩

  单通道16GB的测试成绩

  PC MARK8 Creative测试中“海量照片编辑、视频编辑、高端游戏、视频会议”这几个高负载测试模拟,然而4847的双通道16GB的测试成绩与4831的单通道16GB的测试成绩相差并不多。

  PC MARK8是新一代的整机测试工具,两个测试总分相差并不多,笔者理解为双通道16GB与单通道16GB的更换对PC整机的整体影响并不大。

  在3D MARK、PC MARK 8测试中可以看出单通道16GB与双通道16GB在配合整机工作量的应用中影响并不明显,微乎其微。

  游戏性能测试

  本篇文章的重头戏终于到了,游戏性能测试!

  为了确定同16GB,单通道与双通道的不同是否会对玩家的游戏体验造成影响,到底是应该购买双通道16GB,还是购买单通道16GB等待日后增加内存条,为此笔者特意选取了十款当下主流的游戏来进行测试,想必大家已经等不及了吧!

  《GTA5》帧数测试

  GTA5这个大型沙盒类游戏想必有很多人喜欢,这款游戏巨作有内涵,内容丰富且可玩性极高,玩单机游戏,怎么能不玩GTA5呢。

  

  笔者通过FRAPS软件来测试进行游戏60秒的FPS帧数,汇聚成折线图表供大家直观的对比童16GB,单、双通道不同的内存条。

  

  单通道16GB与双通道16GB内存在《GTA5》游戏中的帧数变化。

  《巫师3:狂猎》帧数测试

  

  《巫师》系列游戏作品的第三部,玩过二代和一代的这代也绝对不容错过,即使没玩过《巫师》系列游戏,这款游戏拥有极大的自由度以及能给玩家强烈代入感,也是完全值得一试的。

  

  单通道16GB与双通道16GB内存在《巫师3》游戏中的帧数变化。

  《刺客信条:枭雄》帧数测试

  

  由育碧Quebec打造的刺客信条:枭雄是刺客信条的第六部,其场景设定在维多利亚时代伦敦,两位主角由一名刺客抚养长大,男主名为雅各·弗莱,他将被卷入维多利亚女王统治下的罪恶伦敦。

  

  单通道16GB与双通道16GB内存在《刺客信条:枭雄》游戏中的帧数变化。

  《彩虹六号:围攻》帧数测试

  

  彩虹六号是育碧蒙特利尔工作室专为新一代游戏主机研发的一款反恐题材射击游戏,这个游戏具有多个场景与多个地图,还可以进行联机游戏,可玩性很高。

  

  单通道16GB与双通道16GB内存在《彩虹六号:围攻》游戏中的帧数变化。

  Steam联机游戏《进化(Evolve)》帧率测试

  现今Steam正版游戏已经受到越来越多的人的认可,更多人的参与到Steam游戏中,下面笔者特意选取了三款能够在Steam平台上联机进行的游戏进行测试,以便更加全面的了解单、双通道16GB内存在不同游戏中的差距如何。

  

  进化(Evolve)是一款以科幻世界观为主题的科幻策略复合类在线多人FPS游戏,简单的说就是四个猎人对付一个怪兽的游戏,这五个角色将都由玩家了扮演。这款游戏近期在Steam平台已经免费,想玩的朋友们不要错过。

  

  单通道16GB与双通道16GB内存在《进化(Evolve)》游戏中的帧数变化。

  《Rust》、《BrainBread2》帧率测试

  Rust、BrainBread2皆是Steam中可联机游戏中的一份子,其中RUST尤为火爆。

  

  单通道16GB与双通道16GB内存在《RUST》游戏中的帧数变化。

  

  单通道16GB与双通道16GB内存在《BrainBread 2》游戏中的帧数变化。

  流行网络游戏《守望先锋》帧率测试

  对于一个十分热衷游戏的玩家来说,单机游戏测试了那么多,怎么能没有网络游戏。下面笔者选取当下流行的三种不同类型的网络游戏进行测试。

  

  守望先锋overwatch是一款由暴雪开发的第一人称团队射击游戏,其多样的人物,多样的搭配,酷炫的格调和美工,一经出品即风靡全球,完美的诠释了“暴雪出品,必属精品”。

  

  单通道16GB与双通道16GB内存在《守望先锋》游戏中的帧数变化。

  《FIFA OL3》、《英雄联盟》帧率测试

  FIFA OL3与英雄联盟这两款游戏皆由腾讯游戏运营,由以后者更为出名,LOL是当今世界最具人气和影响力的网络游戏之一。

  

  单通道16GB与双通道16GB内存在《FIFA OL3》游戏中的帧数变化。

  

  单通道16GB与双通道16GB内存在《英雄联盟》游戏中的帧数变化。

  游戏测试小结:

  通过以上十款游戏的测试,笔者求得了其中FPS的平均数值,以更方便玩家进行直观对比,图表如下

  

  通过图表不难发现,无论是网络游戏还是单机游戏,双通道16GB对比单通道16GB都要有着一些提升,但是这个提升并不明显,在实际使用中并不能明显的感觉出来。

  总结

  通过以上的一系列测试,不难看出单通道16GB与双通道16GB还是有一些差别的,究竟如何决择,笔者给大家分析一下。

  通过基础频率测试看出单通道16GB与双通道16GB内存条在性能参数、读取、写入、拷贝、复制、延迟及总体内存性能方面,还是存在着很大差距的;通过应用程序测试看出双通道16GB在解压缩方面比单通道16GB的速度要快接近1M/s,同理可以看出在双通道16GB在处理海量照片,视频软件等专业软件的能力要高出单通道16GB一些,在某些专业领域,双通道16GB是单通道16GB无法比拟的;在实际性能测试与游戏测试中,在整机不变的情况下,双通道16GB对比单通道16GB的提升并不明显,对于普通的电脑使用者与玩家来说单通道16GB已经足够。

  因此,笔者以为, 对于普通使用电脑的人群与热衷于玩游戏的玩家来说,购买单通道16GB就已足够,而且单通道16GB的价格要低于双通道16GB,性价比更高;对于某些经常使用照片编辑,音视频软件的专业领域工作人员,还是要选择双通道16GB的。

<think>嗯,用户的问题是说他们有一台32G内存的机器,已经运行了一个8G的JVM,再启动另一个8G的时候报内存不足,但改成4G就能启动。需要找出原因。首先,我得考虑JVM的内存分配是否只是堆内存,还是包括了其他部分。用户之前的问题提到了非堆内存,比如元空间、直接内存等,所以可能这两个JVM的总内存需求超过了32G。 首先,用户明确没有使用容器,所以排除了容器限制的可能性。那问题可能出在JVM的堆外内存或者系统层面。每个JVM的堆是8G,但实际进程占用的内存可能不止这个数,因为还有元空间、线程栈、直接内存、JIT编译的代码、GC开销等等。例如,假设每个JVM除了堆之外还有额外的4G内存使用,那么两个JVM可能需要8*2 + 4*2 =24G,加上系统其他进程的内存,可能接近或超过32G。 但用户说第二个JVM改成4G就能启动,说明当第二个堆是4G的时候,总内存可能刚好在32G以内。这时候可能需要验证每个JVM的实际内存占用情况。比如,使用`ps`命令查看RSS(实际物理内存)VSZ(虚拟内存)。如果每个8G堆的JVM实际占用了12G,那么两个就是24G,剩下的8G可能被系统或其他进程占用,导致第二个8G启动失败。而改为4G的话,每个JVM可能占用8G左右,两个就是16G,加上系统内存可能足够。 另外,还需要考虑操作系统的内存分配策略,比如overcommit的设置。如果overcommit_memory是0或者2,系统可能会拒绝过大的内存申请。用户可能需要检查`vm.overcommit_memory``vm.overcommit_ratio`的值,看看是否有严格的限制。 此外,线程数也是一个因素,如果每个JVM创建了大量线程,每个线程的栈内存(默认1MB)累积起来也会占用不少内存。如果用户的应用有高并发线程,可能需要减少线程数或调小栈大小。 还有可能是直接内存或元空间没有显式限制,导致它们占用了过多内存。例如,如果第一个JVM的元空间或直接内存使用了较多,那么第二个JVM可能无法获得足够的堆内存之外的资源。 用户可能需要通过监控工具(如`jstat`、`jcmd`、`top`)来查看每个JVM的实际内存使用情况,包括堆、非堆、直接内存等,以及系统的剩余内存。同时,检查OOM的错误日志,确定是堆内存不足还是其他类型的内存溢出。 总结下来,可能的解决步骤包括:1. 显式限制非堆内存;2. 调整线程栈大小;3. 监控实际内存使用;4. 检查系统内存参数限制。需要用户提供更详细的信息,比如错误日志、内存使用数据等,才能更准确地诊断问题。</think>### 问题根源分析:32GB物理内存,运行两个JVM时总内存不足 #### **1. JVM总内存 ≠ 仅堆内存(-Xmx)** - **核心矛盾**: JVM进程的实际内存占用(RSS)由以下部分构成: $$ \text{总内存} = \text{堆内存(Xmx)} + \text{元空间} + \text{线程栈} + \text{直接内存} + \text{JVM自身开销} $$ 即使设置`-Xmx8g`,**实际进程占用可能高达12GB+**(堆外内存占比可达30%~50%)。 - **示例计算**: - 第一个JVM:`-Xmx8g` → 实际占用约12GB - 第二个JVM:`-Xmx8g` → 总需求24GB - 系统预留内存(OS、内核、其他进程)约8GB → **24GB + 8GB = 32GB(临界值)**,容易因波动触发OOM。 #### **2. 关键验证方法:查看进程实际内存占用** ```bash # 查看已运行JVM的物理内存(RSS)虚拟内存(VSZ) ps -p $(pgrep java) -o rss,vsz,cmd # 示例输出(单位KB): # RSS VSZ CMD # 12345678 23456789 java -Xmx8g ... ``` - **RSS(实际物理内存)**:若第一个JVM的RSS为12GB,剩余可用内存为`32GB - 12GB = 20GB`,第二个JVM需`8g Xmx + 非堆内存`,可能超过20GB。 - **改为`-Xmx4g`后**:第二个JVM总占用约8GB → 剩余内存`32GB - 12GB - 8GB = 12GB`,满足系统需求。 --- ### **解决方案:降低总内存占用** #### **1. 显式限制非堆内存** - **元空间(Metaspace)**:默认无上限,通过`-XX:MaxMetaspaceSize`限制: ```bash java -Xmx8g -XX:MaxMetaspaceSize=1g ... ``` - **直接内存(Direct Memory)**:通过`-XX:MaxDirectMemorySize`限制: ```bash java -Xmx8g -XX:MaxDirectMemorySize=2g ... ``` #### **2. 减少线程栈内存** - **默认每个线程栈占用1MB**(`-Xss1m`),若应用有1000线程 → 1GB内存。 - **优化方案**: ```bash # 将线程栈缩小至256KB(需确保无栈溢出) java -Xmx8g -Xss256k ... ``` #### **3. 启用压缩指针(Compressed OOPs)** - **适用场景**:堆内存 ≤32GB时,启用压缩指针可减少对象头大小,降低内存占用。 ```bash # 默认自动启用,若手动关闭需重新开启 java -Xmx8g -XX:+UseCompressedOops ... ``` #### **4. 监控与调优工具** - **Native Memory Tracking(NMT)**: ```bash java -XX:NativeMemoryTracking=summary -XX:+UnlockDiagnosticVMOptions ... jcmd <PID> VM.native_memory summary ``` - **GC日志分析**: ```bash java -Xlog:gc*,gc+heap=debug:file=gc.log ... ``` --- ### **操作步骤:精准配置两个JVM** #### **场景模拟** - **目标**:在32GB机器上运行两个JVM,每个`-Xmx8g`。 - **参数配置示例**: ```bash # JVM1(第一个进程) java -Xmx8g \ -XX:MaxMetaspaceSize=1g \ -XX:MaxDirectMemorySize=2g \ -Xss256k \ -jar app1.jar # JVM2(第二个进程) java -Xmx8g \ -XX:MaxMetaspaceSize=1g \ -XX:MaxDirectMemorySize=2g \ -Xss256k \ -jar app2.jar ``` - **总内存估算**: - 堆:8GB × 2 = 16GB - 元空间:1GB × 2 = 2GB - 直接内存:2GB × 2 = 4GB - 线程栈:0.25GB × 2000线程 = 0.5GB → **总计约22.5GB**,剩余内存可供系统使用。 --- ### **进阶排查:操作系统级限制** 1. **检查overcommit策略**: ```bash sysctl vm.overcommit_memory # 0=保守分配,2=允许超分 sysctl vm.overcommit_ratio # 默认50,允许额外分配50%物理内存 ``` - **若`vm.overcommit_memory=0`**:系统严格限制内存分配,需调整: ```bash sysctl -w vm.overcommit_memory=2 # 允许超分(临时生效) ``` 2. **关闭透明大页(Transparent Huge Pages)**: ```bash echo never > /sys/kernel/mm/transparent_hugepage/enabled ``` --- ### **总结** 即使物理内存为32GB,JVM的**非堆内存系统预留空间**也会显著影响总可用内存。通过以下措施解决: 1. **显式限制元空间直接内存**,避免默认无上限。 2. **缩小线程栈大小**,减少线程数。 3. **监控实际内存占用**(RSS),确保两个JVM总需求 ≤28GB(预留4GB给系统)。 4. **调整内核参数**(如overcommit),避免分配策略限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值