美文网首页
java实现文件合并;JVM内存配置参数GC日志分析

java实现文件合并;JVM内存配置参数GC日志分析

作者: 学习微站 | 来源:发表于2022-11-12 18:04 被阅读0次

java实现文件合并

import java.io.*;
import java.util.Scanner;
public class FileCopy {
	public static void copyFile(String sourceFileName,String targetFileName)
		throws IOException{
		File sourceFile1=new File(sourceFileName);
		File sourceFile2=new File(sourceFileName);
		File targetFile=new File(targetFileName);
		if(!sourceFile1.exists()){
			System.out.println("文件复制失败!源文件"+sourceFile1.getName()+"不存在");
			return; 
		}
		if(!sourceFile2.exists()){
			System.out.println("文件复制失败!源文件"+sourceFile2.getName()+"不存在");
			return; 
		}
		
		if(targetFile.exists()){
			System.out.println("文件进行复制,是否覆盖现有文件"+
							targetFile.getName()+"?(Y/N):");
			BufferedReader in =new BufferedReader(new InputStreamReader(System.in));
			String override=in.readLine();
			if(!override.equalsIgnoreCase("Y")){
				System.out.println("操作已取消!");
				return;
			}
			
		}
		FileInputStream in=null;
		FileOutputStream out=null;
		in=new FileInputStream(sourceFile1);
		in=new FileInputStream(sourceFile2);
		out=new FileOutputStream(targetFile);
		byte[] buffer=new byte[8];
		int num;
		while((num=in.read(buffer))!=-1)
			out.write(buffer,0,num);
		System.out.println("文件已合并到目标文件");
		System.out.println("第一个源文件:"+sourceFile1.getPath());
		System.out.println("第二个源文件:"+sourceFile2.getPath());
		System.out.println("目标文件:"+targetFile.getPath());
		in.close();
		out.close();
		
		
	}
	
	
	public static void main(String[] args)throws IOException {
		String SrcFileName,DesFileName;
		Scanner in=new Scanner(System.in);
		System.out.println("请输入第一个源文件名:");
		SrcFileName=in.nextLine();
		System.out.println("请输入第二个源文件名:");
		SrcFileName=in.nextLine();
		System.out.println("请输入目标文件名:");
		DesFileName=in.nextLine();
		FileCopy.copyFile(SrcFileName, DesFileName);
		
		
		
	}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

运行结果:

JVM内存配置参数GC日志分析

GC日志:
对于JVM内存配置参数:

-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
-Xmx10240m:代表最大堆

-Xms10240m:代表最小堆,初始分配

-Xmn5120m:代表新生代

-XXSurvivorRatio=3:代表Eden:Survivor = 3 根据Generation-Collection算法(目前大部分JVM采用的算法),一般根据对象的生存周期将堆内存分为若干不同的区域,一般情况将新生代分为Eden ,两块Survivor; 计算Survivor大小, Eden:Survivor = 3,总大小为5120,3x+x+x=5120 x=1024

新生代大部分要回收,采用Copying算法,快!

老年代 大部分不需要回收,采用Mark-Compact算法

运行jar 程序时可以使用这种命令设置java 运行内存:

java -Xms2048m -Xmx2048m -Xmn512m -jar XXXX.jar

https://blog.csdn.net/m0_47914176/article/details/123706946
-Xss1m:HotSpot版本中栈的大小是固定的,是不支持拓展的。 java.lang.StackOverflowError 一般的方法调用是很难出现的,如果出现了可能会是无限递归

-XX:MetaspaceSize=256M: Metaspace扩容时触发FullGC的初始化阈值,也是最小的阈值
-XX:MetaspaceSize:设置元空间大小
-XX:MaxMetaspaceSize:设置元空间最大大小
-XX:+UseParNewGC: 会与并发的终身生成垃圾收集一起自动激活
-XX:+UseConcMarkSweepGC:并发标记清除,即使用CMS收集器
-XX:+PrintGCDetails:打印 gc 详细信息
-Xloggc:gc.log:将GC日志输出到gc.log文件中
-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件 使用-XX:HeapDumpPath配置的时候,需要保证目录的文件夹都是存在,因为它在到处dump文件的时候,不会帮你去创建不存在的目录。

本文使用 文章同步助手 同步

相关文章

  • JVM系列 GC日志的配置和分析

    GC日志的生成 通过在应用启动的时候,配置jvm参数来实现GC日志的输出 GC日志参数设置 可以参照这个设置在 c...

  • jvm参数

    常用的JVM参数 跟踪JAVA虚拟机的垃圾回收 GC日志:jvm垃圾回收,记录jvm的运行状态,oom内存溢出的报...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

  • JVM第三天-GC算法

    一、JVM常见参数配置 Trace 跟踪的参数 1.打印GC日志信息 -verbose:gc -XX:+Prin...

  • Java GC分析

    [TOC] 1、如何收集GC日志 1.1、 配置JVM启动参数: 1.2、 GC相关启动参数说明 1.2.1、简单...

  • JVM GC 日志详解

    JVM GC 日志详解 本文采用的JDK版本: 一、GC 日志参数 设置JVM GC格式日志的主要参数包括如下8个...

  • Java GC日志查看与分析

    一. JVM的GC日志主要参数包括如下: eg.windows下面配置VM参数如下: Linux配置VM参数如下:...

  • JVM内存溢出场景及案例

    1、元空间内存溢出 案例: 解决方案:设置jvm参数打印gc日志,并使用mat工具进行分析 2、虚拟机栈内存溢出 ...

  • java(内存和gc)

    JVM内存和gc机制JVM内存 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收...

  • 科普:教你如何看懂 JavaGC 日志

    JVM GC 相关的参数 示例 比如在某个应用中,配置: 启动后打印如下 GC 日志:YongGC 含义:2019...

网友评论

      本文标题:java实现文件合并;JVM内存配置参数GC日志分析

      本文链接:https://www.haomeiwen.com/subject/ohgqtdtx.html