当前位置: 首页 > news >正文

java和c#比较(三)内存管理PC电脑

         都用垃圾回收机制,都很安全。

算法有区别:

Java: 支持多种垃圾回收算法,如串行GC(Serial GC)、并行GC(Parallel GC)、垃圾优先GC(G1 GC)、低延迟GC(如ZGC、Shenandoah GC)。

.NET: 主要使用带有压缩功能的标记-清除-压缩(Mark-and-Compact)算法,但也支持并行和服务器GC等模式。
类加载和元数据管理:

Java: 类加载器负责加载类,类元数据和字节码通常存放在元空间中(从Java 8开始),而在之前的版本,信息存放在永久代。

.NET: Common Language Runtime (CLR)负责加载程序集,元数据和类型信息存放在Application Domains中。

不过这些东西与我们关系其实并不大,是语言自己去处理的问题。我们其实关心的只有内存限制问题。

Java程序在启动时可以通过JVM参数来设置内存的上限和下限。例如,使用-Xms指定初始堆内存大小,-Xmx指定最大堆内存大小:

java -Xms512m -Xmx1024m MyApplication

在.NET平台上,没有提供一种直接的机制来在应用程序启动时显式配置内存的上限和下限参数。

经过测试,.net不管是在windows还是在linux中,都可以使用最大的内存。

在windows不管你使用多大内存,操作系统不会被应用程序弄死机。但是在linux(我只测了deepin).net如果加载的内存太多,操作系统内存满了会导致deepin会死机。

如果是用java,在启动时设置了最大内存。这样就避免了操作系统内存使用过多而死机的情况。

当然你可以把.net程序放到容器化环境(如Docker),在Docker中,可以通过以下命令限制容器的内存使用:docker run -m 1g my-dotnet-application。

但是pc中,很少人会去配置容器的。

所以在linux的pc中,java在内存管理方面还是有优势的。

相关文章:

  • 微信小程序使用方法
  • ansible copy模块--持续创作中
  • ASP .Net Core创建一个httppost请求并添加证书
  • 操作系统——信号
  • 椭圆曲线加密算法中公钥与私钥互换性分析
  • CSS 变量的优势
  • 移动语义和完美转发
  • java的构造方法——无参构造方法
  • 【JavaEE】Spring Boot MyBatis详解(二)
  • 企业为什么要进行数据资产管理工作:价值与案例剖析
  • 在Elasticsearch中-SpaceJam一个全文搜索的实例
  • Sping源码(九)—— Bean的初始化(非懒加载)— Bean的创建方式(factoryMethod)
  • 深(广)度优先遍历
  • STM32单片机-FLASH闪存
  • LC15.三数之和、LC22括号生成
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Apache Spark Streaming 使用实例
  • Elasticsearch 参考指南(升级前重新索引)
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • git 常用命令
  • HashMap剖析之内部结构
  • IndexedDB
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java比较器对数组,集合排序
  • Java反射-动态类加载和重新加载
  • laravel5.5 视图共享数据
  • PHP那些事儿
  • TypeScript实现数据结构(一)栈,队列,链表
  • Vue2.x学习三:事件处理生命周期钩子
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 模型微调
  • 前端攻城师
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 软件开发学习的5大技巧,你知道吗?
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数据结构java版之冒泡排序及优化
  • 网络应用优化——时延与带宽
  • 用Python写一份独特的元宵节祝福
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #pragma multi_compile #pragma shader_feature
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Forward) Music Player: From UI Proposal to Code
  • (k8s)Kubernetes本地存储接入
  • (LLM) 很笨
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT)一个美国文科博士的YardLife
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)node.js知识分享网站 毕业设计 202038