java 内存管理机制
1、标记清理算法:效率不高(标记和清理过程效率都不高)、会形成内存碎片

- serial收集器:单线程新生代收集器--复制算法
- parNew收集器:多线程并行新生代收集器--复制算法
- parallel scavenge收集器:多线程新生代收集器,主要目的是可以调节 cpu的吞吐量。
- CMS收集器:老年代收集器,需要配合serial或parNew收集器使用,是基于“标记-清除”算法实现的
- serial old收集器:老年代单线程收集器,基于“标记—整理”实现。
- parallel old收集器:老年代多线程并行收集器“标记-整理”算法实现。
- G1(garbage first:优先收集大区域的垃圾):最新的垃圾收集器,是面向服务端应用的垃圾收集器,可以实现低的中断收集,不需要其他收集器的配合就可以独立的完成整个GC堆,基于“标记-整理”和“复制”算法
复制算法:(Eden和survivor的图解)

package com.rhq.test;
publicclassTestAllocation{
privatestaticfinalint _1MB=1024*1024;
/**
* 测试jvm对对象的分配策略
* JVM运行的参数:java堆内存的分配参数设置:-Xms20M(堆大小最小20M) -Xmx20M(堆大小最大20M)
* -Xmn10M(新生代大小10M) -XX:+PrintGCDetails -XX:SurvivorRatio=8(Eden和survivor的所占比例为8:1)
* 即Eden:8M survivor:1M(两个survivor)
*/
publicstaticvoid main(String[] args){
// TODO Auto-generated method stub
byte[] a1,a2,a3,a4;
a1=newbyte[2*_1MB];
a2=newbyte[2*_1MB];
a3=newbyte[2*_1MB];
a4=newbyte[3*_1MB];
}
}
object space 21248K, 11% used [0x00000000f9a00000,0x00000000f9c77190,0x00000000faec0000)
java 内存管理机制的更多相关文章
- 你必须了解的java内存管理机制(二)-内存分配
前言 在上一篇文章中,我们花了较大的篇幅去介绍了JVM的运行时数据区,并且重点介绍了栈区的结构及作用,相关内容请猛戳!在本文中,我们将主要介绍对象的创建过程及在堆中的分配方式. 相关链接(注:文章讲解 ...
- 你必须了解的java内存管理机制(一)-运行时数据区
前言 本打算花一篇文章来聊聊JVM内存管理机制,结果发现越扯越多,于是分了四遍文章(文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8),本文为其中第一篇.from 你必须了解的java内存 ...
- 你必须了解的java内存管理机制(三)-垃圾标记
本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 相关链接(注:文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8) ...
- 你必须了解的java内存管理机制(四)-垃圾回收
本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 相关链接(注:文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8) ...
- java内存管理机制
JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...
- 浅析java内存管理机制
内存管理是计算机编程中的一个重要问题,一般来说,内存管理主要包括内存分配和内存回收两个部分.不同的编程语言有不同的内存管理机制,本文在对比C++和Java语言内存管理机制的不同的基础上,浅析java中 ...
- java内存管理机制剖析(一)
最近利用工作之余学习研究了一下java的内存管理机制,在这里记录总结一下. 1-1.java内存区域 当java程序运行时,java虚拟机会将内存划分为若干个不同的数据区域,这些内存区域创建和销毁的时 ...
- Java 内存管理
java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...
- Java内存管理笔记
java内存管理机制 在java中,内存管理由JVM完全负责,java中的"垃圾回收器"负责自动回收无用对象占据的内存资源,这样可以大大减少程序猿在内存管理上花费的时间,可以更集中 ...
随机推荐
- android自己定义渐变进度条
项目中须要用到一个弧形渐变的进度条,通过android自带是不能实现的.我是没有找到实现的方法,有大神知道的能够指点.效果图是以下这种 这是通过继承VIew来绘制出来的,网上也有相似的,可是代码那是相 ...
- Java 语法清单
Java 语法清单 Java 语法清单翻译自 egek92 的 JavaCheatSheet,从属于笔者的 Java 入门与实践系列.时间仓促,笔者只是简单翻译了些标题与内容整理,支持原作者请前往 ...
- 一起学android之怎样卸载指定的 应用程序(25)
效果图例如以下: 代码例如以下: public class MainActivity extends Activity { private Button btn_delete; @Override p ...
- 启动app-inspector报Internal Server Error
前言 应用工具app-inspector可以协助定位IOS版App的控件元素,然鹅启动时报Internal Server Error! 解决办法 一.找到XCTestWD项目 目录: /usr/loc ...
- IOS之禁用UIWebView的默认交互行为
本文转载至 http://my.oschina.net/hmj/blog/111344 UIKit提供UIWebView组件,允许开发者在App中嵌入Web页面.通过UIWebView组件 ...
- EasyDarwin开源流媒体服务器如何实现按需推送直播的
--本文转自EasyDarwin开源团队成员邵帅的博客:http://blog.csdn.net/ss00_2012/article/details/51441753 我们使用EasyDarwin的推 ...
- poj 1286 Necklace of Beads poj 2409 Let it Bead HDU 3923 Invoker <组合数学>
链接:http://poj.org/problem?id=1286 http://poj.org/problem?id=2409 #include <cstdio> #include &l ...
- easyui Combotree 怎么加载数据 支持多选
1.开发环境vs2012 mvc4 c# 2.HTML前端代码 <%@ Page Language="C#" AutoEventWireup="true" ...
- python中的括号以及元组和列表的区别
1 python中的括号 1.1 花括号 花括号表示的是字典,即键值对. 1.2 方括号 方括号表示的是列表,类似于数组,但是可以允许存放混杂类型的数据. 1.3 圆括号 圆括号表示的是元组,类似于列 ...
- 用css3技术给网站加分
自己写了几个小DEMO,请打开http://codepen.io/shenggen/