>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 30438 个阅读者 刷新本主题
 * 贴子主题:  孙老师能不能从操作系统的角度谈谈Java的内存管理 回复文章 点赞(0)  收藏  
作者:zhangzl419    发表时间:2017-06-23 17:40:48     消息  查看  搜索  好友  邮件  复制  引用

Java的内存管理管理问题一直是热门的话题,提到内存管理,一般的人会说Java的内存分为:堆、方法区,栈、程序计数器、本地方法栈,但是这似乎是从jvm的角度看的。从操作系统角度看,jvm是一个操作系统的进程,它分配到的内存应该和一般的进程分配到的内存是类似的,一般的linux进程分配到的内存分为:代码区、数据区、堆区、栈区。那么操作系统给jvm进程分配的栈区是不是就是java的栈,操作系统给jvm进程分配的堆,是不是就是java的堆?

还有在谈及垃圾回收的时候,又把内存叫做edge区、from survivor区,to survivor区,tenured区

这些感觉好乱,孙老师能不能讲一讲?


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->泛型
  JavaWeb开发-->开发JavaMail Web应用
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->安全网络通信
  精通Spring-->通过Axios访问服务器
  Vue3开发-->计算属性和数据监听
  CRMEB_Java新零售社交电商系统
  Java小白们的练手大餐:100道编程题面试题精讲(最新推出)
  BIO、NIO和AIO的区别、三种IO的原理与用法
  Java Proxy用法: 让我们创建一个API代理器
  Java设计模式: 单一职责原则和依赖倒置原则详解
  JDBC API中的桥接模式
  Java并发之volatile关键字内存可见性问题
  java.util.logging.Logger使用详解
  面试必考-static、final和单例模式
  Eclipse使用指南:Debug 配置
  Java设计模式:观察者模式
  Socket服务器的整体架构
  Java入门实用代码:格式化时间(SimpleDateFormat)
  java使用gzip实现文件解压缩示例
  类加载中的双亲委派模型
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 sunweiqin 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 480
经验: 480
现金: 1128
发文章数: 171
注册时间: 2016-09-12
 消息  查看  搜索  好友  邮件  复制  引用


JVM 只是一个应用程序。 JVM负责向操作系统申请内存。 JVM会自己管理自己的虚拟内存,负责规划堆区和栈区等。 但是操作系统会管理JVM 向操作系统申请的内存,具体的说, 操作系统负责为JVM分配和释放内存。而JVM 管理从操做系统中申请到的内存。
发文章时间 2017-06-23 20:55:11
 IPIP: 已设置保密 1 楼     
该用户目前不在线 zhangzl419 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 258
经验: 258
现金: 1250
发文章数: 31
注册时间: 2017-02-19
 消息  查看  搜索  好友  邮件  复制  引用


下面引用由 孙卫琴 2017-06-23 20:55:11 发表的内容:
JVM 只是一个应用程序。 JVM负责向操作系统申请内存。 JVM会自己管理自己的虚拟内存,负责规划堆区和栈区等。 但是操作系统会管理JVM 向操作系统申请的内存,具体的说, 操作系统负责为JVM分配和释放内存。而JVM 管理从操做系统中申请到的内存。



老师,您能不能看一下这篇文章:http://www.cnblogs.com/yecao8888/p/6688639.html,这篇文章讲的是不是全部没有错误?因为现在网上的文章很多有错误的,我只相信孙老师。如果这篇文章写的都是正确的话,那么就非常好了,就怕有错误啊。
发文章时间 2017-06-24 15:08:17
 IPIP: 已设置保密 2 楼     
该用户目前不在线 sunweiqin 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 480
经验: 480
现金: 1128
发文章数: 171
注册时间: 2016-09-12
 消息  查看  搜索  好友  邮件  复制  引用


关于JVM内部的实现细节,我也没有深入研究过。在不同的操作系统中,JVM的具体实现是不一样的。JVM需要直接和操作系统做紧密交互。您提供的这篇文章介绍了在Linux中,Linux为JVM分配虚拟内存的方式,以及JVM自身管理虚拟内存的方式。我觉得这篇文章大部分内容都是正确的。总的说来,JVM有很大的自主权利来管理自己的内存空间。这篇文章可以帮助我们如何比较准确地估算一个Java服务程序大概会占用多少内存,是否会导致操作系统的内存空间不足的问题。

发文章时间 2017-06-24 16:27:23
 IPIP: 已设置保密 3 楼     
该用户目前不在线 zhangzl419 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 258
经验: 258
现金: 1250
发文章数: 31
注册时间: 2017-02-19
 消息  查看  搜索  好友  邮件  复制  引用


下面引用由 孙卫琴 2017-06-24 16:27:23 发表的内容:
关于JVM内部的实现细节,我也没有深入研究过。在不同的操作系统中,JVM的具体实现是不一样的。JVM需要直接和操作系统做紧密交互。您提供的这篇文章介绍了在Linux中,Linux为JVM分配虚拟内存的方式,以及JVM自身管理虚拟内存的方式。我觉得这篇文章大部分内容都是正确的。总的说来,JVM有很大的自主权利来管理自己的内存空间。这篇文章可以帮助我们如何比较准确地估算一个Java服务程序大概会占用多少内存,是否会导致操作系统的内存空间不足的问题。




谢谢孙老师的回复,我认真拜读过您的《Java面向对象编程》,所以很信任你的Java水平。这篇文章我觉得写的很好,从Linux操作系统的角度,对Jvm的内存管理做了很好地阐述,但是我怕因为自己的知识盲区,导致其中的有些错误无法识别,所以才请您把关。

非常感谢!
发文章时间 2017-06-24 22:59:07
 IPIP: 已设置保密 4 楼     
该用户目前不在线 sunweiqin 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 480
经验: 480
现金: 1128
发文章数: 171
注册时间: 2016-09-12
 消息  查看  搜索  好友  邮件  复制  引用


谢谢您对我的信任。欢迎您经常来访问JavaThinker网站,互相分享交流Java开发经验。让这个网站成为对大家有帮助的java技术交流社区。
发文章时间 2017-06-25 18:04:15
 IPIP: 已设置保密 5 楼     
该用户目前不在线 zhangzl419 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 258
经验: 258
现金: 1250
发文章数: 31
注册时间: 2017-02-19
 消息  查看  搜索  好友  邮件  复制  引用


下面引用由 孙卫琴 2017-06-25 18:04:15 发表的内容:
谢谢您对我的信任。欢迎您经常来访问JavaThinker网站,互相分享交流Java开发经验。让这个网站成为对大家有帮助的java技术交流社区。



我现在的水平能解决大部分的Java问题,有拿不准的问题,我依然会求教于您,谢谢!
发文章时间 2017-06-26 14:54:55
 IPIP: 已设置保密 6 楼     
该用户目前不在线 sunweiqin 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 480
经验: 480
现金: 1128
发文章数: 171
注册时间: 2016-09-12
 消息  查看  搜索  好友  邮件  复制  引用


你现在的Java水平已经很高了。我在这个领域里也有许多空白之处,欢迎互相切磋和学习。
发文章时间 2017-06-26 15:03:15
 IPIP: 已设置保密 7 楼     
1页 7条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。