首页 技术 正文
技术 2022年11月12日
0 收藏 986 点赞 2,843 浏览 568 个字

1.前言。 
   其实jvm能优化的空间不多,最主要的是使用的共享内存不要超过默认的2g或者自己调的参数。但了解一下还是有点意思的,建议面试时还是要看,别学笔者裸奔。 
2.区别。 
  网上说是有5点区别。但笔者认为只有两点主要区别。

  1. 堆–用new建立,垃圾自动回收负责回收
  2. 1、堆是一个”运行时”数据区,类实例化的对象就是从堆上去分配空间的;
  3. 2、在堆上分配空间是通过”new”等指令建立的;
  4. 3、Java针对堆的操作和C++的区别就是,Java不需要在空间不用的时候来显式的释放;
  5. 4、Java的堆是由Java的垃圾回收机制来负责处理的,堆是动态分配内存大小,垃圾收集器可以自动回收不再使用的内存空间。
  6. 5、但缺点是,因为在运行时动态分配内存,所以内存的存取速度较慢。
  7. 1、栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄;
  8. 2、栈的存取速度比堆要快;
  9. 3、栈数据可以共享;
  10. 4、栈的数据大小与生存期必须是确定的,缺乏灵活性。

笔者认为就两点: 
(1)堆主要放new的对象,而栈放基本类型和句柄,句柄指向的是堆。 
(2)垃圾回收的时候回收的是堆,栈比较难回收,一般不回收(这个才是问你的原因,呵呵)。

3.总结。 
就速度而言,都是内存操作,其实并没有很大区别。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289