Sweep

JVM中的OopMap

梦想与她 提交于 2019-12-04 06:45:53
调用栈里的引用类型数据是GC的根集合(root set)的重要组成部分;找出栈上的引用是GC的根枚举(root enumeration)中不可或缺的一环。 JVM选择用什么方式会影响到GC的实现: 如果JVM选择不记录任何这种类型的数据,那么它就无法区分内存里某个位置上的数据到底应该解读为引用类型还是整型还是别的什么。这种条件下,实现出来的GC就会是“保守式GC(conservative GC)”。在进行GC的时候,JVM开始从一些已知位置(例如说JVM栈)开始扫描内存,扫描的时候每看到一个数字就看看它“像不像是一个指向GC堆中的指针”。这里会涉及上下边界检查(GC堆的上下界是已知的)、对齐检查(通常分配空间的时候会有对齐要求,假如说是4字节对齐,那么不能被4整除的数字就肯定不是指针),之类的。然后递归的这么扫描出去。 保守式GC的好处是相对来说实现简单些,而且可以方便的用在对GC没有特别支持的编程语言里提供自动内存管理功能。Boehm-Demers-Weiser GC是保守式GC中的典型代表,可以嵌入到C或C++等语言写的程序中。 小历史故事: 微软的JScript和早期版VBScript也是用保守式GC的;微软的JVM也是。VBScript后来改回用引用计数了。而微软JVM的后代,也就是.NET里的CLR,则改用了完全准确式GC。 为了赶上在一个会议上发布消息

The Concurrent Mark Sweep collector

家住魔仙堡 提交于 2019-12-03 11:41:32
The Concurrent Mark Sweep collector The Concurrent Mark Sweep (CMS) collector (also referred to as the concurrent low pause collector) collects the tenured generation(老年代). It attempts to minimize the pauses due to garbage collection by doing most of the garbage collection work concurrently with the application threads. Normally the concurrent low pause collector does not copy or compact the live objects. A garbage collection is done without moving the live objects. If fragmentation becomes a problem, allocate a larger heap. Note: CMS collector on young generation uses the same algorithm as

Android中Shape属性

痞子三分冷 提交于 2019-12-03 01:59:32
Android基础之 Shape Shape是android中一个比较基础但是也比较重要的部分,巧妙利用shape可以用代码写出比较好看的形状、背景等等,方便快捷,同时也减少图片资源的使用,为app瘦身。 1.Shape的四种类型 ["rectangle" | "oval" | "line" | "ring"] rectangle:矩形 oval:椭圆形 line:线性 ring:环形 默认为rectangle。即默认为矩形 定义: <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 环形的属性: android:innerRadius="dimension" //内环半径 android:innerRadiusRatio="float" //内环半径相对于环的宽度的比例,比如环的宽度为50,比例为2.5,那么内环半径为20 android:thickness="dimension" //环的厚度 android:thicknessRatio="float" //环的厚度相对于环的宽度的比例 android:useLevel="boolean"> //如果当做是LevelListDrawable使用时值为true,否则为false. 圆角: <!--

Fast ping sweep in python

匿名 (未验证) 提交于 2019-12-03 01:48:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: So, I'm trying to get similar results using python as I do with a bash script. Code for the bash script: #!/bin/bash for ip in $(seq 1 254); do ping -c 1 10.10.10.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 & done The thing that I would like to do is get the same results with similar speed. The issue that I've had with every version of the python script is that it takes a very long time to complete compared to the few seconds the batch script takes. The batch file takes about 2 seconds to sweep a /24 network while the the

Background sticky concurrent mark sweep GC freed

匿名 (未验证) 提交于 2019-12-03 01:33:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have an application that checks the database every 10 seconds if there is any new data, if there is any data it will get it and stop checking the database. I have implemented a text watcher to check if the textbox is empty. If it is, it will check the database, if it contains any text it will stop. This is my code: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtBoxUser.addTextChangedListener(checkUserRent); getData(); } //TEXTWATCHER FOR GETTING

How to Solve Numba Lowering error?

匿名 (未验证) 提交于 2019-12-03 01:00:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have a function, which I am trying to speed up using the @jit decorator from Numba module. For me it is essential to speed this up as much as possible, because my main code calls upon this function for millions of times. Here is my function: from numba import jit, types import Sweep #My own module, works fine @jit(types.Tuple((types.complex128[:], types.float64[:]))(types.complex128[:], types.complex128[:], types.float64[:], types.float64[:], types.float64)) def MultiModeSL(Ef, Ef2, Nf, u, tijd ): dEdt= np.zeros(nrModes, dtype=np

4、Butterfly sweep

為{幸葍}努か 提交于 2019-12-02 02:44:30
基础蝴蝶扫: 右肩抢到对手腋下,右手抓腰带,将对手拉下来 左手抄住对手肘关节,左腿移出来 左腿撑起身体右脚扫倒进入袈裟固 拿不到under hook时: 右手抱对手头,将对手拉下来 左手抄住对手肘关节,左腿移出来 左腿撑起身体右脚扫倒进入袈裟固,再拿under hook 来源: https://www.cnblogs.com/zhengtao1992/p/11726704.html

java 面试知识点笔记(四)垃圾回收 上篇

落花浮王杯 提交于 2019-12-01 02:09:29
问:对象判定为垃圾的标准? 没有被其他对象引用 问:对象判定为垃圾的算法? 引用计数算法 通过判断对象的引用数量来判断对象是否可以被回收 每个对象实例都有一个引用计数器,被引用则+1,完成引用-1 任何引用计数为0的对象实例可以当垃圾收集的 优点:执行效率高,程序受影响较小 缺点:无法检测出循环引用的情况,导致内存泄漏memory leak 可达性分析算法 通过判断对象的引用链是否可达来决定对象是否可以被回收 可以作为GC Root的对象 虚拟机栈中的引用对象(栈帧中的本地变量表) 方法区中的常量引用对象 方法区中的类静态属性引用的对象 本地方法栈中JNI(Native方法)的引用对象 活跃线程的引用对象 问:谈谈你了解的垃圾回收算法? 标记-清除算法(mark and sweep) 标记:从根集合进行扫描,对存活的对象进行标记 清楚:对堆内存从头到尾进行线性遍历,回收不可达对象内存,并把原来标记为可达的标记清除掉 优点:效率高,因为不需要对对象的移动操作。 缺点:碎片化,标记清除之后会留下大量不连续的内存空间,碎片太多可能会导致以后程序运行过程中无法提供连续内存,而不得不进行另一次垃圾回收 复制算法(Copying) 分为对象面和空闲面 对象在对象面上创建 存活的对象从对象面复制到空闲面 将对象面所有对象内存清除 优点: 解决了碎片化的问题 (每次复制到空闲面的对象都是连续排放的

3.深入jvm内核-原理、诊断与优化-5. GC参数-cms垃圾收集器

风流意气都作罢 提交于 2019-11-30 10:34:17
串行收集器 并行收集器 ··· ··· cms收集器 并发与并行 GC参数整理 -XX:+UseSerialGC:在新生代和老年代使用串行收集器 -XX:SurvivorRatio:设置eden区大小和survivior区大小的比例 -XX:NewRatio:新生代和老年代的比 -XX:+UseParNewGC:在新生代使用并行收集器 -XX:+UseParallelGC :新生代使用并行回收收集器 -XX:+UseParallelOldGC:老年代使用并行回收收集器 -XX:ParallelGCThreads:设置用于垃圾回收的线程数 -XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器 -XX:ParallelCMSThreads:设定CMS的线程数量 -XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发 -XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理 -XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩 -XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收 -XX

jvm内存布局及

谁说胖子不能爱 提交于 2019-11-30 10:21:13
关于jvm和GC还是自己写一篇文章来强化下把。 一、JVM 运行时内存布局 1、先盗两张图再说,方便理解和记忆。参考链接会附在下面 2、左图 6 块区域按是否被线程共享,可以分为两大类,即右图所示。 1)PC Register:也称为程序计数器(有的叫寄存器), 记录每个线程当前执行的指令信。eg:当前执行到哪一条指令,下一条该取哪条指令。 2)JVM Stack:也称为虚拟机栈,记录每个栈帧(Frame)中的局部变量、方法返回地址等。栈也是JAVA虚拟机自动管理的(不是由gc)。栈类似一个集合(不过是有固定的容量),是由很多元素(专业术语:栈帧)组合起来的。在我们码代码的时候,每调用一个方法,在运行的时候,JAVA虚拟机就会自动在内存中分配对应的一块空间,那么这块空间就是一个栈帧,也就自然属于栈了,而当方法调用结束后,对应的栈帧就会被释放掉,那么因为JAVA程序从main方法开始执行,那么JAVA虚拟机就会在内存中分配一块main方法的栈帧,如果main方法里没有调用其它方法,那么,main方法调用结束后,会把main方法栈帧释放掉,此时,栈里没有了栈帧,程序结束。此段话是抄的,讲的通俗易懂。 补充一点,在方法中的局部变量,如果是基本类型,会把值直接存储在栈。如果是引用类型,会把其对象存储在堆,而把这个对象的引用(指针)存储在栈。类的成员变量在不同对象中各不相同