V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AoEiuV020JP
V2EX  ›  程序员

电脑内存都被谁占了

  •  3
     
  •   AoEiuV020JP · 221 天前 · 10590 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我真的怀疑有没有什么病毒隐藏了进程信息,
    我电脑 24G 内存,动不动就炸,已提交内存总在 22G 以上,
    尤其最近关闭了虚拟内存,实在是公司电脑硬盘太拉胯,一直用虚拟内存就一直卡,
    关了虚拟内存就反复炸内存, 任务管理器里永远找不到内存占用高的,虚拟机和 wsl 也没在用,
    难道真的这几十一两百兆能吃满 24G ?
    第 1 条附言  ·  221 天前
    android java 编译进程总是崩溃,我都要崩溃了,
    第 2 条附言  ·  221 天前
    刚知道任务管理器详细信息有个“提交大小”默认隐藏的, 打开后能看到一些偷内存的,
    87 条回复    2024-04-18 20:59:13 +08:00
    wheat0r
        1
    wheat0r  
       221 天前   ❤️ 4
    rammap 看看
    但是这事真的很难查
    我这边不仅内存缓慢爆炸,显存也会,我怀疑 Windows 在背着我打游戏
    Eiden
        2
    Eiden  
       221 天前
    加内存
    feirisu
        3
    feirisu  
       221 天前
    看看性能那里,“已提交”是虚拟内存,看看“使用中”多少,这个是物理的内存
    dif
        4
    dif  
       221 天前
    内存

    32.0 GB

    速度: 4800 MHz
    已使用的插槽: 2/2
    外形规格: SODIMM
    为硬件保留的内存: 276 MB

    可用 19.9 GB
    已缓存 19.3 GB
    已提交 16.1/51.7 GB
    分页缓冲池 1.4 GB
    非分页缓冲池 1017 MB
    使用中(已压缩) 11.6 GB (1.1 GB)

    就开了个 VSCODE ,一个微信,一个 QQ 。
    HOMO114514
        5
    HOMO114514  
       221 天前   ❤️ 2
    低端 PC 主板电气性能不佳,并且没配备 ECC/RECC 的时候,因为内存错位导致内存堆积、可用容量越来越小的情况很常见。
    尤其是早年板载内存的笔记本平台,以及只插了单条内存的电脑,我曾经用过一台低配的机器,开机什么都不干睡一晚上起来内存就爆满,所有进程崩溃。

    解决方法是,加多几条内存,虽然没有实际有效的证据,但是在我的使用经验中多通道会显著降低内存错误和内存堆积的发生概率
    feirisu
        6
    feirisu  
       221 天前
    tool2dx
        7
    tool2dx  
       221 天前 via Android   ❤️ 1
    用 tasklist 可以看个大概,导入到 excel 里,我这里还挺准的。
    AoEiuV020JP
        8
    AoEiuV020JP  
    OP
       221 天前
    @feirisu #3 问题我已经关了虚拟内存,这个“使用中”总是比“已提交”要低了几个 G ,“已提交”总是快爆满状态,这时候我的 java 编译进程就会崩溃,但“使用中”还有剩几 G ,
    AoEiuV020JP
        9
    AoEiuV020JP  
    OP
       221 天前
    @Eiden #2 我都想自己组一台电脑带公司来了,
    公司电脑实际是最大 8G 内存,已经有 16G 是我自己自费加的了,
    hanyuwei70
        10
    hanyuwei70  
       221 天前
    用 sysinternals 的 rammap 看看谁占着的
    5200
        11
    5200  
       221 天前   ❤️ 1
    大概率是浏览器吃掉了,
    前几天我也专门分析了一下内存情况。
    你要看 工作集内存,工作集内存 = 使用中内存,
    性能 - 资源监视器里面有明细。
    需要更详细的数据可以使用微软的 ProcessExplorer

    各字段官方解释:
    提交:操作系统为进程保存的虚拟内存量;
    工作集:进程当前正在使用的物理内存量;
    可共享:进程当前使用的可与其他进程共享的物理内存量;
    专用:进程当前使用的不能被其他进程共享的物理内存量;

    工作集 = 可共享 + 专用
    yanlaz
        12
    yanlaz  
       221 天前
    提交内存是应用程序申请的内存,提交满了内存就是满了,一般浏览器占用多。虚拟内存放固态盘一般也不会卡的
    wxf666
        13
    wxf666  
       221 天前
    @AoEiuV020JP 总感觉,Win10+ 有内存泄漏。。

    表现为,用了几天后,关闭所有程序,但系统还会吃很多内存。。(比如一半以上。。)

    Win7 、XP ,好像没有这种现象。。
    Donahue
        14
    Donahue  
       221 天前
    加到 64GB. 节省时间精力,避免内存不足恐惧症。我加到 32GB 之后都没怎么看过内存了
    5200
        15
    5200  
       221 天前
    @Donahue 我 32 都不够用,等 618 上 64 了
    AoEiuV020JP
        16
    AoEiuV020JP  
    OP
       221 天前
    @yanlaz #12 公司的 西数 sata ssd 绿盘 感觉不是一般的拉胯, 用几年了,似乎越来越拉胯了, 一旦动到虚拟内存就整个电脑卡住什么都做不了,
    dog82
        17
    dog82  
       221 天前
    系统重装
    cr3bit
        18
    cr3bit  
       221 天前 via iPhone
    win 别彻底关虚拟内存,会让你物理内存无法全用。不用的话留一个推荐大小
    ovoo
        19
    ovoo  
       221 天前 via Android
    内存泄漏,重启缓解
    AoEiuV020JP
        20
    AoEiuV020JP  
    OP
       221 天前
    @cr3bit #18 言之有理,我关闭虚拟内存几个月了,算是看明白了,已提交的总会有一大堆是没用的,实际使用总会小于已提交,那么允许提交上限就得超过真实内存,只能开虚拟内存了,
    jianrenjun
        21
    jianrenjun  
       221 天前
    日常开机 25gb 一个 vs 一个 idea 还有 docker 但是 docker 只跑了几个 redis 实际上不需要担心内存 如果实在是强迫症可以 memreduct 这个软件清理下
    winterbells
        22
    winterbells  
       221 天前
    电脑还好,各种任务管理器可以查。手机才是乱…
    winterbells
        23
    winterbells  
       221 天前
    编译安卓试试用 jdk21 ?设置 studio_jdk 和 gradio_jdk 环境变量,再修改 vmoptions 和 gradle.properties ,使用分代 zgc
    我现在是这样的,但是没有去测试到底内存有没有少
    jrqlxue
        24
    jrqlxue  
       221 天前
    我用 16G 内存的时候总是占 70%以上,现在用 32G 内存的,还是 70%以上,我也很无奈..
    opengps
        25
    opengps  
       221 天前
    没事清理一下,推荐 RamMap64.exe
    XuHuan1025
        26
    XuHuan1025  
       221 天前
    cpu 也很重要,公司 i7-12700+16 比自己 i5-12+32 起项目快了两倍,而且流畅
    AoEiuV020JP
        27
    AoEiuV020JP  
    OP
       221 天前
    @XuHuan1025 #26 我是 i5 8400 , 五年前还是不错的, 没想到五年后还是公司最高配的 cpu,
    hiveex
        28
    hiveex  
       221 天前
    神奇 今天摸鱼也在研究这个问题 来了就看到了
    NewYear
        29
    NewYear  
       221 天前
    我的小工具,10k ,只是点击按钮的时候有一点点计算然后马上完成了,也不调用啥,其他都是闲置的没有任何动作,现在是闲置中的,居然占用是内存是 1.5MB ,已提交 30MB ?

    有点夸张了。
    kokutou
        30
    kokutou  
       221 天前 via Android   ❤️ 1
    因为不能关虚拟内存。
    虚拟内存请放在 c 盘固态上。
    虚拟内存设置系统管理的大小。
    别看那些瞎几把优化的文章。
    archxm
        31
    archxm  
       221 天前
    大概率 java 语法分析占用了
    libook
        32
    libook  
       221 天前
    Java 用太多内存了?看能不能加个参数限制一下最大内存?
    dna1982
        33
    dna1982  
       221 天前
    近任务管理器看看。
    如果找不到是谁占的内存,八成就是驱动/驱动级的程序有泄露。
    这时候就需要用 PoolMon 看。
    jurassic2long
        34
    jurassic2long  
       221 天前
    说一个我之前遇到的吧,vscode 的 ssh remote 巨吃内存,开一个项目七八 G ,不用 remote 就没这个问题
    archxm
        35
    archxm  
       221 天前
    @jurassic2long 那个是泄漏了吧,我记得有这么回事。但应该修复了
    luozic
        36
    luozic  
       221 天前
    浏览器内存 尤其是基于 electron 的那一堆 动不动来个内存泄漏
    twofox
        37
    twofox  
       221 天前
    跟我一样。

    我日常使用的就是 idea 、webstorm 、VMware 外加浏览器之类的

    用着用着 95%以上的占用,虚拟内存也快满了
    然后我把所有的软件关掉,占用还是 50%(我 32G 内存)

    我怀疑是内存泄漏,我今天查了半天。发现可能是一个 cckT 开头的驱动导致的。但是目前还没找到具体是哪个驱动
    w169q169
        38
    w169q169  
       221 天前
    今天才 debug 了一遍了,什么 rammap ps info 都用了一遍,没啥用。全部软件都关闭了都还有 10G commit 的内存。explorer.exe 都 kill 了一遍再重启,少了几 G ,但是还是这么多。
    frankilla
        39
    frankilla  
       221 天前
    @wheat0r 哈哈哈哈,背着你打游戏。😂
    wolfan
        40
    wolfan  
       221 天前
    win 是这样的,你有多少内存都会帮你使用上的。
    内存少,就给你虚化高一点,内存大,虚化就少一点。
    QlanQ
        41
    QlanQ  
       221 天前
    内存这块,最清晰的是 Linux ,其他的都看不懂,Mac 更是垃圾
    qiany
        42
    qiany  
       221 天前
    虚拟内存不能关
    JensenQian
        43
    JensenQian  
       221 天前 via Android
    8400 啊,d4 条子一堆便宜货
    你多整几个不就完事了
    DefoliationM
        44
    DefoliationM  
       221 天前 via Android
    jvm 占的,有多少吃多少
    YouMoeYi
        45
    YouMoeYi  
       221 天前
    我这个电脑 16G 更痛苦, 我开电脑 6G, 刚开个 Chrome 占 4.5G(我 pin 了大概 15 个标签是没做完, 没看完的东西还有些常用网站 然后开个 VS Code+前端开发服务器 3G, 然后我 Chrome 开多点标签然后再开个 VScode 就要崩溃了 只能过几天加个内存; 但是很奇怪的是我另一台电脑感觉就不会占这么多内存
    xmumiffy
        46
    xmumiffy  
       221 天前 via Android
    我这虚拟机( hyperv )有内存泄漏,任务管理器上显示一个 G ,实际会用 3 40G 。重启 hyperv 就释放了
    xw
        47
    xw  
       221 天前 via iPhone
    Chrome 换成 Firefox 试试
    kenvix
        48
    kenvix  
       221 天前
    @AoEiuV020JP #8 这点内存还敢关分页文件,我实在是难以评价,我 64G 都不敢关
    D6IIx
        49
    D6IIx  
       221 天前
    @YouMoeYi 帮你省钱,chrome 的锅,加内存没用
    littiefish
        50
    littiefish  
       221 天前 via iPhone
    @xw firefox 以前还可以,现在一个球样
    ON9
        51
    ON9  
       221 天前 via Android
    我 16g ,一直不关机一个月也没有问题,但是一个月后关闭所有程序,会发现内存占用很高,应该就是内存泄漏了。但是这个时候我疯狂开网页,又不会卡和崩溃,就很神奇,win10ltsc
    Levox
        52
    Levox  
       221 天前
    @kenvix 我 16G 都敢关。OOM 崩溃了就重启.jpg
    ShadowPower
        53
    ShadowPower  
       221 天前
    感觉 2021 以后的 JetBrains 系 IDE 都非常吃内存,稍微大一点的项目仅 IDE 本身就可以用 5GB ,超大项目+装了很多插件往往都要 10GB 以上了。
    里面还塞了一个 Chromium ,现在有些插件可以用 Web 技术来做界面了。

    想起当年用 2017 版的时候,如果用 idea.exe 而不是 idea64.exe (用 32 位 JRE ),打开项目只需要 500~700MB 内存,只有 4~8GB 内存的电脑也能凑合用。如果用 32 位 JDK 跑项目那就更省了。

    2019 之后大概需要 2GB 了。

    之前装了个 Codeium 插件,自带一个 lsp server ,我发现只要项目够大,它的独立进程都可以吃 2GB 内存。

    还有大型 Rust 项目,不用 JetBrains ,但是用 rust-analyzer ,打开一个源码,仅 rust-analyzer 本身就用 1.5GB 。



    对了,我的 CPU 有 16 线程,因此有些工具为了充分利用 CPU 性能,开 16 个独立线程/进程跑不同任务。内存需求也是成倍上升……

    我觉得,如今要想用得舒服至少要 32GB ,要想 99.9%的时间都忘记内存容量有限制则需要 64GB~128GB 。


    把开发工具降级回远古版本就很省内存了,只是用起来感觉效率低了不少。
    msg7086
        54
    msg7086  
       221 天前
    提交大小「偷」的是你的虚拟内存。系统默认开着虚拟内存,他用虚拟内存,当然不需要你去关心使用量。
    你现在把虚拟内存关掉了,当然会出问题了。
    Windows 内核是禁止超量申请内存的,一个进程申请 4G 多,你要么给 4G 物理内存,要么给 4G 虚拟内存。
    Java 是出了名的吃内存,32 位的时候就一个进程吃 2G 了,64 位能吃更多。都那么多年了不会还有人不知道吧。
    msg7086
        55
    msg7086  
       221 天前
    程序要跑起来,你总得给他个地方跑,开虚拟内存,那就是把多余的内存分页扔进硬盘里,虽然慢点,但至少还能跑。关了虚拟内存,程序连跑的地方都没有了。
    要做 Java 我觉得 32G 是起步。我司的笔记本板载 8G ,插槽我换了一根 32 的,40G 算是差强人意,有条件的话还是上 64 比较好一些。我自己的开发机笔记本就是 32+32 了。
    w568w
        56
    w568w  
       220 天前   ❤️ 5
    稍微了解一下操作系统原理吧,避免几个误区:

    1. 「已提交」和内存占用没有半毛钱关系,也不是程序「恶意偷内存」。哪怕你的已提交显示 1 TB ,物理内存只有 8 GB ,也完全不能代表你的电脑内存满了或者没满。「已提交」的唯一意义是告诉你「所有应用宣告申请了这么多内存」,但「申请」不等于「用」:很多使用自己的用户空间内存分配器的程序会直接从系统那里「申请」过来一大把内存(甚至比实际物理内存还大),然后慢慢用。真正的内存占用是指程序「用」的部分。这部分你应该通过 Resident Set 或 Working Set 来估算;
    2. 虚拟内存是 Windows 滥用的错误术语之一。虚拟内存本身是操作系统的基本概念,指为每个进程都需要分配一个独立的地址空间,这个地址空间映射到物理内存页面中。你说的这项能关掉的功能应该是指交换空间 / 分页文件( Swap )。
    2. 交换空间关掉并不能让系统在高负载下变快。相反,我不推荐在任何场景下关掉。它的目的是为了让匿名页面和文件后备页面具有同等的交换地位,都能够在内存不足时释放。关掉后,只有后者能释放,所以等于是在高负载下系统能强制释放内存的手段变少了一个,只会让系统更不稳定。
    mikeluckybiy
        57
    mikeluckybiy  
       220 天前 via Android
    @wxf666 win7 也有,同一个系统 iso ,一台本子重装了 win7 后有内存泄漏什么都不开内存占用会越来越多,另外一台就是完全正常的,怀疑和 NVIDIA 或者其它什么驱动有关。
    cleanery
        58
    cleanery  
       220 天前
    @mikeluckybiy #57 我的只会发生在 长时间的待机/休眠 后
    每次电脑休眠再唤醒后, 已提交就多几个 G, 每次都是
    shenxian996
        59
    shenxian996  
       220 天前
    开虚拟内存,这个不能关,具体原因自己百度,
    换 ssd ,加内存条,
    wanguorui123
        60
    wanguorui123  
       220 天前
    java + chromium = 内存黑洞
    icyalala
        61
    icyalala  
       220 天前   ❤️ 3
    内存有 overcommit 的概念。
    就是说当程序申请内存时,这部分内存大小是算作“已提交”的,但程序可能只用到了部分内存。
    比如 void *buf = malloc(100 * 1024 * 1024); 这算做"已提交" 100MB ,这时是不消耗物理内存的。但是 memset(buf, 0, 20 * 1024 * 1024); 操作就是 "使用中" 20MB ,这时系统才会实际分配物理内存。

    如果 "已提交" 的大小超过物理内存大小这就是 overcommit 。
    Linux 允许 overcommit ,毕竟 commit 不是真实使用,所以提交再多也无所谓,但一旦访问超出可用内存,就会开始杀进程。所以 Linux 下编程习惯是可以尽量申请更多内存,但只要访问部分足够小就行。但 Windows 一般是不允许 overcommit 的,也就是只要超过可用内存,提交时就会直接失败。这时如果开启页面文件,系统会优先把那些已提交但未使用的内存交换到磁盘,但由于未使用所以并不会发生 IO 。

    你如果听信那些莫名其妙的优化建议,把页面文件关掉,那么由于"使用中" 内存肯定小于 "已提交" 内存,那你的物理内存肯定会无法利用满。
    sloknyyz
        62
    sloknyyz  
       220 天前   ❤️ 1
    24g 不够用太正常了,我之前 32G 都动不动满内存,现在换到 64G(花了 1 千不到),终于解决了内存焦虑,开发也更顺畅了。建议花点钱直接拉满,吃饭的东西没必要省,你查来查去会发现,内存它就是要用这么多
    luxor
        63
    luxor  
       220 天前
    @w568w 无论是开不开页交换,已提交内存也是有上限的。到达上限后,即便物理内存还有很多剩余,应用程序也无法申请新的物理内存。
    关闭 pagefile 当然可以提高性能,可以减少大量的磁盘读写,延长磁盘的寿命。只不过某些应用对已提交内存占用的优化不够,造成实际物理内存占用不高,但已提交内存占用很高。开了 pagefile 后,只是推迟了已提交内存被占满的情况。只要开启更多类似的大型应用,已提交内存同样会被占满。根源是在应用程序自身。
    kenvix
        64
    kenvix  
       220 天前
    @icyalala #61 唯一正解,Windows 发生 overcommit 的时候具体也不是交换到磁盘,而是单纯保留一部分 SWAP 磁盘空间,实际上是没有额外性能开销的
    vfs
        65
    vfs  
       220 天前
    @AoEiuV020JP 都用上 android studio 了, 就给 8G 的内存的机器啊。。。你让老板在你的机器上开发试试
    w568w
        66
    w568w  
       220 天前
    @luxor

    楼上关于 Overcommit 的问题解释得很清楚了。我可以再总结一下:

    1. 「关闭 pagefile 当然可以提高性能」:关闭 pagefile 和性能无关,只是影响你提交总量的多少;
    2. 「某些应用对已提交内存占用的优化不够,造成实际物理内存占用不高」:正是因为应用会提交更多内存(有的是因为沿袭了 Linux 的习惯,有的纯粹是在设计上难以解决),所以开启 pagefile 才是必须的。否则由于 Windows 的特性,你将连本来的物理内存都不能完全利用;
    3. 「可以减少大量的磁盘读写,延长磁盘的寿命」:一方面,Windows 在交换方面已经很保守了;另一方面,如果出现「大量的磁盘读写」情况,说明平时的工作负载(注意!这里说的是实际的内存使用。仅仅提交很多内存而不使用,并不会产生任何磁盘读写。参考楼上)对内存来说已经不堪重负了,那么升级内存是最佳解决办法,而 pagefile 也能作为一种后备资源来在瞬时高负载时分担一下。关掉 pagefile 属于纯纯的掩耳盗铃、自欺欺人,其结果是工作负载运行不起来了。而且由于第 2 点,就连原本的物理内存都无法完全利用了,百害而无一利。
    dwSun
        67
    dwSun  
       220 天前


    那个年代,虽然生活没有那么丰富多彩,但是简单。
    zhangeric
        68
    zhangeric  
       220 天前
    这个可以点击那个资源监视器查看得.
    YGBlvcAK
        69
    YGBlvcAK  
       220 天前
    我遇到过的是 esxi 直通显卡给 debian10 ,内存会一点点上涨直至爆了,所以如果全关了内存还在上涨,有可能是某个驱动或程序导致的内存泄漏
    wetalk
        70
    wetalk  
       220 天前
    @YouMoeYi 16G 开机占 6G 不合理的,可能自启太多了,正常 20 ~ 25%左右
    incubus
        71
    incubus  
       220 天前
    vipfts
        72
    vipfts  
       220 天前
    @dwSun 谢谢哈, 让我一下回到 20 年前
    asdgsdg98
        73
    asdgsdg98  
       220 天前
    虚拟机关了就行,虚拟机占用的内存有些不会表现在详细信息里
    declandragon
        74
    declandragon  
       220 天前
    我最近也在看这个,莫名奇妙 90% 以上了
    已经发现了一个问题就是 docker desktop 会占用 14%左右,但是任务管理器上面看不懂

    https://s21.ax1x.com/2024/04/17/pFxqrIs.png
    MoeMoesakura
        75
    MoeMoesakura  
       220 天前
    Jetbrains 家跟浏览器吧 20G 内存的 Linux Laptop 都经常进 swap (当然是 goland 之类玩意跟 chrome 一起开的
    declandragon
        76
    declandragon  
       220 天前
    #74 看不懂 打错了,是 看不到
    Lightbright
        77
    Lightbright  
       220 天前 via Android
    64g 以下不要关闭页面文件,宝贝
    obama
        78
    obama  
       220 天前
    8G ram 关虚拟内存的路过
    verrickt
        79
    verrickt  
       220 天前 via Android
    @w568w 我理解系统因为 swap 而出现大量磁盘读写的情况大概率是抖动[thrashing],这时因为频繁的 page fault 占用了大量 CPU cycle 导致 os 的响应速度慢了成千上万倍,ram 的频繁读写还没持续多久,用户自己就先受不了了
    verrickt
        80
    verrickt  
       220 天前 via Android
    @verrickt 如果 Windows 不允许 over commit 的话就没 thrashing 什么事了
    dingyaguang117
        81
    dingyaguang117  
       220 天前
    浏览器一个页面就 200M.....
    w568w
        82
    w568w  
       220 天前
    @verrickt #79

    事实上关闭 swap 也不能完全防止 thrashing 问题。就像前面说的,swap 的目的是「让匿名页面和文件后备页面具有同等的交换地位,都能够在内存不足时释放」。

    即使禁用了 swap ,当内存高负荷时,系统也会尝试释放内存,只不过它只能释放文件后备页面(例如从磁盘载入内存的代码段、动态链接库、文件系统缓存等):当文件存在脏写时,还是会触发大量写盘;当内存紧缺到即将读取的链接库和文件都要被释放时,还是会导致 thrashing 。

    总之,我觉得楼主的问题还是在于内存不够。Swap 只是一种帮助缓解(也可能加剧) thrashing 的手段,但 16G 内存不能流畅跑需要 32G 的程序,这是任何软件都改变不了的。Swap 最多把「跑不起」变成「勉强跑起」罢了。
    luxor
        83
    luxor  
       220 天前
    @w568w 性能影响并不是指 overcommit ,而是 windows 会把后台进程使用的物理内存定时 page in ,此时当切换前台进程时,系统变得非常卡。关闭 pagefile ,无论什么时候切换进程都是流畅的。
    asche910
        84
    asche910  
       220 天前
    没事关下机
    OrdinaryMan
        85
    OrdinaryMan  
       219 天前
    换 linux 开发
    kangyue9999
        86
    kangyue9999  
       219 天前 via Android
    有 Chrome 就不用看了,直接就 Chrome 了
    kangyue9999
        87
    kangyue9999  
       219 天前 via Android
    另外,现在建议你设置跟你物理内存一样大小的虚拟内存,因为感觉 Win10 会试图缓存一些东西。所以就算关闭了程序实际上内存也不一定会 100%释放,所以增加一点虚拟内存保证高提交的时候依然可以有交换空间
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:07 · PVG 08:07 · LAX 16:07 · JFK 19:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.