关于java参数-8的信息
本篇文章给大家谈谈java参数-8,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Java类中参数列表的个数与数据类型有哪些
Java中有8种基本数据类型 如下:
一、4种整型
byte 1字节 -128——127
short 2 字节 -32,768 —— 32,767
int 4 字节 -2,147,483,648 ——2,147,483,647(超过20亿)
long 8 字节 -9,223,372,036,854,775,808——9,223,372,036854,775,807
注释:java中所有的数据类所占据的字节数量与平台无关,java也没有任何无符号类型
二、 2种浮点类型
float 4 字节 32位IEEE 754单精度(有效位数 6 – 7位)
double 8 字节 64位IEEE 754双精度(有效位数15位)
三、1种Unicode编码的字符单元
char 2 字节 整个Unicode字符集
四、1种真值类型
boolean 1 位 True或者false
3种引用类型
类class
接口interface
数组array
java中,一个方法需要使用utf-8 格式,另一个方法需要使用GBK格式,请问如何实现互相的参数传递和调用?
java中所有字符串都是以unicode格式存储的;我做过一个类似的应用,将文本数据隐藏到图片中,其中就涉及到不同编码问题;
比如:
String S1 = "百度123"; //不需要指定格式,都是以Unicode格式保存
Byte[] byt1= S1.getBytes("UTF-8"); //解码成UTF-8的格式
Byte[] byt2= S1.getBytes("GBK"); //解码成GBK的格式
注:UTF-8中文占三个字节,GBK中文占两个字节,英文都是一字节,查看byt1和byt2的长度是不是满足转换关系。
常用JVM参数(JDK 8)
-Xss :线程栈空间
-Xms : 初始堆空间,如: -Xms512M
-Xmx : 最大堆空间,如: -Xmx512M
-XX:MinHeapFreeRatio : 堆空间最小空闲比,当堆空间空闲内存小于这个数值时,JVM会扩展堆空间。
-XX:MaxHeapFreeRatio : 堆空间最大空闲比,当堆空间空闲内存大于这个数值时,JVM会压缩堆空间,得到一个较小的堆。
-XX:NewSize : 新生代初始空间
-XX:MaxNewSize : 最大新生代空间
-Xmn : 相当于设置相同的 -XX:NewSize 和 -XX:MaxNewSize .
-XX:SurvivorRatio : 新生代中eden空间和s0空间的比例
-XX:TargetSurvivorRatio : survivor区的可使用率,当survivor区的空间使用率达到这个数值时,会将对象送入老年代。
-XX:NewRatio : 老年代 / 新生代的空间比例
-XX:MetaspaceSize=512m : 分配给类元数据空间的初始大小,以bytes为单位,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当的降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize(如果设置了的话),适当的提高该值。
-XX:MaxMetaspaceSize=512m : 分配给类元数据空间的最大值, 超过此值就会触发Full GC. 此值仅受限于系统内存的大小, JVM会动态地改变此值
-XX:MinMetaspaceFreeRatio ,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为class metadata分配空间导致的垃圾收集。
-XX:MaxMetaspaceFreeRatio ,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为class metadata释放空间导致的垃圾收集。
-XX:CompressedClassSpaceSize=512m : 类指针压缩空间大小, 默认为1G
-XX:+PrintGCDetails : 打印GC细节
-XX:+PrintGC :
-XX:+PrintGCTimeStamps :
-XX:+PrintHeapAtGC :
Java 8 以前的JVM内存结构图:
其中:
虚拟机栈 在运行时使用 栈帧 保存上下文,栈帧中存储了以下内容:
更为精细地, 堆 和 方法区 的结构如下:
堆 分为 新生代 和 老年代 .
新生代 分为 Eden区 、 s0区(survivor space0或from space) 和 s1区(survivor space1或to space) 。
大部分新创建的对象进入Eden区,幸存区s0区和s1区存放经历了至少一次GC的“幸存者”。如果幸存区中的对象到了指定年龄仍未被回收,则有机会进入 老年代(tenured)
对于习惯了HotSpot虚拟机的程序员来说,很多都愿意将 方法区 称作 永久代 。本质上来讲两者并不等价,仅因为Hotspot将GC分代扩展至方法区,或者说使用永久代来实现方法区。在其他虚拟机上是没有永久代的概念的。也就是说方法区是Java虚拟机规范,永久代是Hotspot针对该规范进行的实现。
堆 和 方法区 都是被JVM中所有线程共享的。
Java 8以后的JVM内存结构图:
Java8中,Hotspot取消了永久代,永久代的参数 -XX:PermSize 和 -XX:MaxPermSize 也随之失效。
对于Java8,HotSpots取消了永久代,是不是就没有方法区了呢?当然不是,方法区只是一个规范,只不过它的实现变了。
在Java8中, 方法区存在于元空间(Metaspace) 。同时,元空间不再与堆连续,而且是存在于本地内存(Native memory)。
本地内存(Native memory) ,也称为 C-Heap ,是供JVM自身进程使用的。当Java Heap空间不足时会触发GC,但本地内存空间不够却不会触发GC。
元空间存在于本地内存,意味着只要本地内存足够,它不会出现像永久代中 java.lang.OutOfMemoryError: PermGen space 这种错误。默认情况下元空间是可以无限使用本地内存的,但JVM同样提供了参数 -XX:MaxMetaspaceSize 来限制它使用的空间。
java参数-8的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java参数-8的信息别忘了在本站进行查找喔。